#include<stdio.h> int max(int x,int y) { return x>y?x:y; } int min(int x,int y) { return x>y?y:x; } int main() { int R,C; scanf("%d%d",&R,&C); int a[R][C]; int i,j,p=0,q=0,m,n,maxi,sum=0; for(i=0;i<R;i++) {
解题思路:
遍历周围4个位置的木瓜数进行比较。
注意事项:
在遍历周围的位置时注意临接情况。
参考代码:
#include<stdio.h>
int max(int x,int y)
{
return x>y?x:y;
}
int min(int x,int y)
{
return x>y?y:x;
}
int main()
{
int R,C;
scanf("%d%d",&R,&C);
int a[R][C];
int i,j,p=0,q=0,m,n,maxi,sum=0;
for(i=0;i<R;i++)
{
for(j=0;j<C;j++)
{
scanf("%d",&a[i][j]);
}
}
while(!(p==R-1&&q==C-1))
{
maxi=0;
sum+=a[p][q];
a[p][q]=0;
for(i=max(p-1,0);i<=min(p+1,R-1);i++)#注意临界情况进行比较
{
for(j=max(q-1,0);j<=min(q+1,C-1);j++)
{
if(i==p&&j==q)#排除遍历时遍历至原位
continue;
else if(p==i||j==q)#至少横坐标或纵坐标有一个是与原位置一样,故为周围4个空位
{
if(a[i][j]>=maxi)
{
maxi=a[i][j];
m=i;
n=j;
}
}
}
}
p=m;
q=n;
}
sum+=a[R-1][C-1];#最后一个位置在while循环中并未加入,需要后续补入
printf("%d\n",sum);
return 0;
}
0.0分
1 人评分