skins346   7년 전

//예제 입출력은 잘 실행되는데 채점하면 틀렸다고 하네요. 어디가 틀린걸까요. 예외케이스좀 알려주세요!

#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;

}

thsdnjstjq1   7년 전

case:

4

1 2 3 4


--- 결과 ---
올바른답 : 7
출력결과: 6

skins346   7년 전

답변 정말 감사드립니다 . 

그런데 이상한점이 저기 순열 만드는 while문에서 count세보면 

4

1234 의 입력일때 6번밖에 돌지 않습니다. 4!이면 24번 돌아야 할텐데 next_permutation 사용법이 잘못 된건 가요? ㅜㅜ 제 눈에는 도저히 안보이네요 

thsdnjstjq1   6년 전

https://msdn.microsoft.com/ko-... 한번 읽어보고시 그래도 모르시겠으면 댓글 남겨주세요

댓글을 작성하려면 로그인해야 합니다.