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

 

 

 

 

 

转载于:https://www.cnblogs.com/huashanqingzhu/p/3837119.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值