2017-09-15 1 views
0

배열의 인접하지 않은 요소의 최대 합계를 찾는 알고리즘을 생각해 냈지만 어떤 숫자가 있는지 찾는 데 어려움이 있습니다. 합계를 위해 골랐다. 나 우리가 선택하는 숫자의 indice을 얻을 수 있도록배열의 인접하지 않은 숫자의 최대 합계에 대해 선택된 숫자의 인덱스를 찾는 방법

int n; //number of cells. Cells are labeled from 1 to n 
int num[]; // all the numbers 
int findMax[]; // findMax[i] equals to the current maximum score 
for (int i = 0; i<n; i++){ 
    if (i == 0){ 
     findMax[0] = num[0]; 
    } 
    else if (i == 1){ 
     findMax[1]= Math.max(findMax[0],num[1]); 

    } 
    else{ 
     findMax[i]=Math.max(findMax[i-2]+num[i], findMax[i-1]); 

} 
return findMax[n]; 

그것은 너무 명확하지 않다 : 여기에 (일부 초기화없이) 최대 금액 내 알고리즘이다. 누군가 제발이 점에 대해 통찰력을 줄 수 있습니까? 감사!

+1

저는 스택 오버플로 커뮤니티의 새로운 사용자입니다. 내 질문에 명확하지 않은 경우 여기에 의견을 남기십시오. 모든 힌트 또는 제안을 환영합니다. – Andyzz

답변

0

Math.max 대신 최상의 조건을 얻기 위해 자신의 조건을 사용하십시오.

두 변형 중에서 최대 값을 선택하면 최상의 변형 인덱스를 추가 저장 장치 (배열)에 씁니다.

마지막으로 최상의 조합을 풀어 둡니다.

이 단서가 작업을 해결하기에 충분할 것으로 기대합니다.

관련 문제