#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.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论