求助!为什么i会越界?

P2958 [USACO09OCT] Papaya Jungle G

这。。谁看得清啊
by tocek_shiki @ 2018-07-18 16:58:57


欢迎使用markdown
by 斗神·君莫笑 @ 2018-07-18 16:59:21


你插入代码在试一下
by Register @ 2018-07-18 17:13:18


要不然看不懂
by Register @ 2018-07-18 17:13:39


```c #include<stdio.h> int main() { int r, c, sum, count=0; scanf("%d%d", &r, &c); int i, j, num[r][c][2]={0}; for(i=0;i<r;i++){ for(j=0;j<c;j++) scanf("%d", &num[i][j][0]); } sum=num[0][0][0]; int near[4]={0}, max; i=j=0; printf("0 0\n"); while(count<=r*c){ if(i-1>=0){ if(!num[i-1][j][1]) near[0]=num[i-1][j][0]; else near[0]=0; } if(i+1<=r-1){ if(!num[i+1][j][1]) near[2]=num[i+1][j][0]; else near[2]=0; } if(j+1<=c-1){ if(!num[i][j+1][1]) near[1]=num[i][j+1][0]; else near[1]=0; } if(j-1>=0){ if(!num[i][j-1][1]) near[3]=num[i][j-1][0]; else near[3]=0; } max=0; for(int k=1;k<4;k++){ if(near[max]<near[k]) max=k; } switch(max){ case 0 : i=i-1;sum+=num[i][j][0];num[i][j][1]=num[i][j][0];break; case 1 : j=j+1;sum+=num[i][j][0];num[i][j][1]=num[i][j][0];break; case 2 : i=i+1;sum+=num[i][j][0];num[i][j][1]=num[i][j][0];break; case 3 : j=j-1;sum+=num[i][j][0];num[i][j][1]=num[i][j][0];break; } count=i*4+j+1; printf("%d %d\n", i, j); } printf("%d", sum); return 0; } ```
by 药飛煌 @ 2018-07-19 10:26:07


谢谢各位大佬帮忙看一下
by 药飛煌 @ 2018-07-19 10:26:39


|