• P1027 木瓜地


    P1027 木瓜地
    时间: 1000ms / 空间: 131072KiB / Java类名: Main

    背景

    USACO OCT09 4TH

    描述

    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一共吃了
    多少个木瓜。

    输入格式

    * 第一行: 两个空格隔开的整数R和C.

    * 第2到R+1行: 第i+1行有C个空格隔开的整数,表示第i行的每个格的水果数。也就是F_i1, 
    F_i2, ..., F_iC.

    输出格式

    * 第一行: 一个单独的整数,表示到Bessie吃完右下角(R,C)的木瓜回到牛棚的时候為止,
    一共在木瓜林吃掉了多少个木瓜。

    测试样例1

    输入

    3 4 
    3 3 4 5 
    4 5 3 2 
    1 7 4 2

    输出

    39

    备注

    Bessie按照下图数字旁边的字母的顺序吃掉木瓜。

         (1,1) ---> (1,C)
    (1,1) 3a  3   4g  5h  (1,C)
      |   4b  5c  3f  2i    |
    (R,1) 1   7d  4e  2j  (R,C)
         (R,1) ---> (R,C)

    她吃了39个木瓜,剩下4个没有吃(也就是说除了2个格幸免於难,剩下的格子都被Bessie扫
    荡过了)。
     

    搜索。
    先定义两个数组表示上下左右的移动//Bessie可以从一个格沿著一条跟X轴或Y轴平行的直线走到邻接的令一个格
    然后开始搜索当前格四周的最大值
    边界的话就是最后一格结束
    然后最后从搜索到的最大格继续往后找最大格不断搜索
    没啦
     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<algorithm>
     5 #define inf 0x7fffffff
     6 using namespace std;
     7 int r,c;//r hang c lie
     8 int xx[5]={0,1,0,-1},yy[5]={1,0,-1,0};//xia you shang zuo
     9 int a[45][45];
    10 int ans=0;
    11 void dfs(int x,int y)//x hang y lie 
    12 {
    13     ans+=a[x][y];
    14     if(x==r&&y==c)return ;
    15     a[x][y]=-1;
    16     int mxx=0,mxy=0;
    17     for(int d=0;d<4;d++)
    18     {
    19         int dx=x+xx[d],dy=y+yy[d];
    20         if(a[dx][dy]>a[mxx][mxy])
    21         {
    22             mxx=dx;
    23             mxy=dy;
    24         }
    25     }
    26     dfs(mxx,mxy);
    27 }
    28 
    29 int main()
    30 {
    31     cin>>r>>c;
    32     for(int i=1;i<=r;i++)for(int j=1;j<=c;j++)scanf("%d",&a[i][j]);
    33     dfs(1,1);
    34     cout<<ans;
    35     puts("");
    36     return 0;
    37 }
    QAQ

    找过的格子别忘了标记一下QAQ

    //为什么我总觉得这个题目的木瓜两个字充满恶意QAQ
  • 相关阅读:
    怎么在Vue项目中使用Element组件
    vue-cli 基本使用
    C++ delete指针以后应赋值为NULL
    C++ noexcept异常说明及其使用
    Qt 设置comboBox里面的字体颜色
    Qt 获取可用串口
    Qt 寻找可用串口
    荧光显微镜简介
    荧光滤光片简介
    消色差、半复消色差、复消色差的区别
  • 原文地址:https://www.cnblogs.com/gc812/p/5798982.html
Copyright © 2020-2023  润新知