|
|
back to boardplease help me why it is wrong Posted by xinxin 8 Sep 2016 19:55 #include<stdio.h> #include<string.h> int main() { int n,i=0,j,temp=0; int a[99999]; int b[20]; scanf("%d",&b[0]); while(b[i]!=0) { i++; scanf("%d",&b[i]); } n=i; a[0]=0; a[1]=1; for(i=2;i<99999;i++) { if(i%2==0) a[i]=a[i/2]; else a[i]=a[i/2]+a[i/2+1]; } for(i=0;i<n;i++) { for(j=0;j<=b[i];j++) { if(a[j]>temp) { temp=a[j]; } } printf("%d\n",temp); } fflush(stdin); getchar(); return 0; } Re: please help me why it is wrong N can be as high as 99999; however you do int a[99999]; which only creates an array [0..99998]. Sigh, this counterintuitive syntax always creates errors like this. Re: please help me why it is wrong Posted by xinxin 9 Sep 2016 19:34 thank you very much but i change 99999 to 100000,it is still wrong ....sad...why... Re: please help me why it is wrong Did you change it from 99999 to 100000 in BOTH places? Also, you should do temp=0 before your for(j=0;j<=b[i];j++) or otherwise the maximum will remain the same as on previous request (you can try test 10, 5, 0 and it should give you 4 4 with your current code) Re: please help me why it is wrong Posted by xinxin 11 Sep 2016 08:08 thank you!!! it is temp that cause the wrong answer. thanks! |
|
|