#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 人评分
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:626 |
A+B for Input-Output Practice (VI) (C++代码)浏览:413 |
A+B for Input-Output Practice (C++代码)浏览:605 |
【亲和数】 (C语言代码)浏览:492 |
这可能是一个假的冒泡法浏览:985 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:746 |
母牛的故事 (C语言代码)浏览:915 |
众数问题 (C语言代码)浏览:821 |
WU-判定字符位置 (C++代码)浏览:1395 |
C语言训练-数字母 (C语言代码)浏览:600 |