wildforce   6년 전

예제 시도도 다양하게 해보고 계속 실행하는데도 틀렸다고 하는데요.

우선 코드를 짠 방식은 N을 입력받고 동적할당으로 int 형 배열 [N][3]개를 만든후에
각 색별로 색칠할 때의 값을 받습니다.
뒷자리 인덱스가 

0일때 빨간색 

1일때 녹색 

2일때 파랑색

이라고 정해두고

비교 함수 두개를 만들었는데요

int Cost3(int a, int b, int c,int& index);
int Cost2(int a, int b,int &index); 입니다.

두 함수 모두 리턴 값은 최솟값을 리턴하구요 .
3개로 비교하느냐 2개로 비교하느냐의 차이만 가지고 있습니다.
두 함수의 마지막 매개변수인 index는 앞집이 사용한 색에 대한 정보를 가진 변수인데,
함수 내부에서 중복된 색을 검출하기 위한 변수입니다.

저 상태에서 Cost2 함수에서 비교할때 인덱스가 작은 것이 무조건 앞에 들어가게 비교를 하였습니다. 

예를 들어 앞집에서 빨간색을 썼다고 했을때
index 는 0이 된 상태에서
Cost2(a,b,index);가 호출되면

Cost2 함수 내부에서 if(index ==0)의 항목이 실행되게끔 적었습니다.
비교를 했을때  a<b라면 index는 1이 되고, a의 값이 반환됩니다.
b<a라면 index는 2가 되고, b의 값이 반환됩니다.

저런식의 함수를 이용하여 반복문을 N번 까지 돌려서
누적된 값을 출력하는 방식을 사용했는데

첫 시작이 빨간색에서 시작했을 때, 녹색에서 시작했을 때, 파란색에서 시작했을 때
최솟값이 달라지는 경우가 발생한다는 걸 알아내고 RGB시작시의 값을 따로 구하고 

최종적으로 비교해서 제일 작은 값이 cout되게 코드를 작성했습니다. 그런데 대체 어디서 틀리는 건지 모르겠습니다. 

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