P1027 木瓜地

复制代码
/*===========================================================
描述 Description
Bessie不小心游荡出Farmer John的田地,而走进了相邻的农民的地。她举起一个木瓜,木
瓜对奶牛来说可是不可多得得美味。这个木瓜林像一般的威斯康星州的田地一样被分割成一个
R行C列的网格(1 <= R <= 40, 1 <= C <= 40)。Bessie可以从一个格沿著一条跟X轴或
Y轴平行的直线走到邻接的令一个格。Bessie发现一开始她自己在木瓜林的(1,1),也就是第
一行第一列慢悠悠地咀嚼著木瓜。

Bessie总是用她最信赖地双筒望远镜去数每一个邻接的格的低掛著的木瓜的数目。然后她就游
荡到那个有最多没有被吃掉的木瓜的邻接的格子(保证这洋的格子只有一个)。

按照这种移动方法,最终Bessie总是会在(R,C)停止然后吃掉那裡的木瓜。

给定这个木瓜林的大小及每个格的木瓜数F_ij(1 <= F_ij <= 100), 要求Bessie一共吃了
多少个木瓜。
输入格式 InputFormat
* 第一行: 两个空格隔开的整数R和C.

* 第2到R+1行: 第i+1行有C个空格隔开的整数,表示第i行的每个格的水果数。也就是F_i1, 
F_i2, ..., F_iC.
输出格式 OutputFormat
* 第一行: 一个单独的整数,表示到Bessie吃完右下角(R,C)的木瓜回到牛棚的时候為止,
一共在木瓜林吃掉了多少个木瓜。
样例输入 SampleInput
3 4
3 3 4 5
4 5 3 2
1 7 4 2
样例输出 SampleOutput
39

这个题既然题目明讲搜索策略就是选最大的而且保证能到达坐标(R,C) ,
所以可以直接简单按题目意思模拟过程即可。 不需要考虑什么贪心等策略,
也不用考虑会进入死胡同的问题。 
=============================================================*/
复制代码
复制代码
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int R,C,i,j,x,y,mx,my,m;
 5     int a[41][41];
 6     int sum=0;
 7     scanf("%d%d",&R,&C);
 8     for(i=1;i<=R;i++)
 9     {
10         for(j=1;j<=C;j++)
11         {
12             scanf("%d",&a[i][j]);
13         }
14     }
15     i=1;
16     j=1;
17     sum=a[i][j];
18     a[i][j]=0;
19     while(!(i==R&&j==C))
20     {
21         m=-1;
22         x=i-1;
23         y=j;
24         if(x>0&&x<=40&&y>0&&y<=40)
25         {
26             if(a[x][y]>m)
27             {
28                 m=a[x][y];
29                 mx=x;
30                 my=y;
31             }
32         }
33         x=i+1;
34         y=j;
35         if(x>0&&x<=40&&y>0&&y<=40)
36         {
37             if(a[x][y]>m)
38             {
39                 m=a[x][y];
40                 mx=x;
41                 my=y;
42             }
43         }
44         x=i;
45         y=j-1;
46         if(x>0&&x<=40&&y>0&&y<=40)
47         {
48             if(a[x][y]>m)
49             {
50                 m=a[x][y];
51                 mx=x;
52                 my=y;
53             }
54         }
55         x=i;
56         y=j+1;
57         if(x>0&&x<=40&&y>0&&y<=40)
58         {
59             if(a[x][y]>m)
60             {
61                 m=a[x][y];
62                 mx=x;
63                 my=y;
64             }
65         }
66         i=mx;
67         j=my;
68         sum=sum+m;
69         a[i][j]=0;
70     }
71     printf("%d\n",sum);
72     return 0;
73 }
View Code
复制代码

 

 

 

 

 

posted on   华山青竹  阅读(410)  评论(0编辑  收藏  举报

(评论功能已被禁用)
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示