저는 최근 Skiena의 "Programming Challenges"책을 읽기 시작했으며 매우 첫 번째 문제에 얽매이지 않았습니다.왜 내 3n + 1 문제 해결책이 잘못 되었습니까?
는 여기에 문제에 대한 링크입니다 : 3n+1 problem
여기 내 코드입니다 :
#include <stdio.h>
long get_cycle(long input){
if (input == 1){
return 1;
}
else{
if (input & 1){
return 2 + get_cycle((3*input+1)>>1);
}
else{
return 1 + get_cycle(input >> 1);
}
}
}
long get_range_cycle(int k, int j){
int i;
int max = 0;
int current_cycle;
int to = k > j ? k : j;
int from = k < j ? k : j;
for (i=from; i<=to; ++i){
current_cycle = get_cycle(i);
if (current_cycle > max){
max = current_cycle;
}
}
return max;
}
int main(){
long p, q;
long re[100][3];
int i = 0;
while (scanf("%ld %ld",&p,&q) == 2){
re[i][0] = p;
re[i][1] = q;
re[i][2] = get_range_cycle(p,q);
++i;
}
int j;
for (j=0; j<i; ++j){
printf("%ld %ld %ld\n",re[j][0],re[j][1],re[j][2]);
}
}
내 코드를 잘못 무엇인가가? 입력 및 출력은 sample.But과 정확히 동일하지만 제출 결과는 항상 런타임 오류입니다!
"내 코드에 어떤 문제가 있습니까?" 아주 좋은 스택 오버플로 질문이 아닙니다. –
문제를 해결할 수는 없지만, 당신의 메인은 뭔가를 "반환"해야합니다. – Vache
당신은 정말로 uva 판사 포럼에서 물어 봐야합니다 –