10819번 - 차이를 최대로
//예제 입출력은 잘 실행되는데 채점하면 틀렸다고 하네요. 어디가 틀린걸까요. 예외케이스좀 알려주세요!
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>#include <algorithm>using namespace std;
int arr[8];int N;
int temp = 0;int result = 0;
void cal(){ do{ temp = 0; for (int i = 0; i <N-1; i++) temp += abs(arr[i] - arr[i+1]); if (temp > result) result = temp; } while (next_permutation(arr, arr+N-1));}
int main(){ scanf("%d", &N);
for (int i = 0; i < N; i++) scanf("%d", &arr[i]);
sort(arr, arr+N-1); cal(); printf("%d", result);
return 1;
}
case:
4
1 2 3 4
--- 결과 ---올바른답 : 7출력결과: 6
답변 정말 감사드립니다 .
그런데 이상한점이 저기 순열 만드는 while문에서 count세보면
1234 의 입력일때 6번밖에 돌지 않습니다. 4!이면 24번 돌아야 할텐데 next_permutation 사용법이 잘못 된건 가요? ㅜㅜ 제 눈에는 도저히 안보이네요
https://msdn.microsoft.com/ko-... 한번 읽어보고시 그래도 모르시겠으면 댓글 남겨주세요
댓글을 작성하려면 로그인해야 합니다.
skins346 6년 전
//예제 입출력은 잘 실행되는데 채점하면 틀렸다고 하네요. 어디가 틀린걸까요. 예외케이스좀 알려주세요!
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <algorithm>
using namespace std;
int arr[8];
int N;
int temp = 0;
int result = 0;
void cal()
{
do{
temp = 0;
for (int i = 0; i <N-1; i++)
temp += abs(arr[i] - arr[i+1]);
if (temp > result)
result = temp;
} while (next_permutation(arr, arr+N-1));
}
int main()
{
scanf("%d", &N);
for (int i = 0; i < N; i++)
scanf("%d", &arr[i]);
sort(arr, arr+N-1);
cal();
printf("%d", result);
return 1;
}