问题 1432: [蓝桥杯][2013年第四届真题]剪格子

问题描述
如下图所示,3 x 3 的格子中填写了一些整数。
±-–±-+
|10
1|52|
±-***–+
|20|30
1|
*******–+
| 1| 2| 3|
±-±-±-+
我们沿着图中的星号线剪开,得到两个部分,每个部分的数字和都是60。
本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等。
如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目。
如果无法分割,则输出 0。
输入
程序先读入两个整数 m n 用空格分割 (m,n< 10)。
表示表格的宽度和高度。
接下来是n行,每行m个正整数,用空格分开。每个整数不大于10000。
输出
输出一个整数,表示在所有解中,包含左上角的分割区可能包含的最小的格子数目。

题意:就是让你求是否存在这样分割线,那么我们就是要抓住题目关键词,从左上角开始,这不就是深搜嘛!

思路:从左上角开始深度搜索,不断跟新最小的左上角
DFS板子题,算是复习了,让我对其有了更深刻的体验。
那么能不能BFS呢?找到就直接是最短的长度,有待测试。

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;

int ma[20][20];
int visit[20][20];
int cou;
int mi = inf;
int m,n;
int zx[4] = {0,0,-1,1};
int zy[4] = {1,-1,0,0};

void dfs(int x,int y,int step,int sum)
{
 if(sum>cou/2)
   return;
 if(sum == cou/2){
  mi = min(mi,step);
  return;
 }
  for(int i = 0;i<4;i++)
  {
   int tx = x+zx[i];
   int ty = y+zy[i];
   if(tx>=1 && tx<=n && ty>=1 && ty<=m && visit[tx][ty] == 0)
   {
    visit[tx][ty] = 1;
    dfs(tx,ty,step+1,sum+ma[tx][ty]);
    visit[tx][ty] = 0;
   }
  }
 
}

int main()
{     
      cin>>m>>n;
      for(int i = 1;i<=n;i++)
        for(int j = 1;j<=m;j++)
            {
             cin>>ma[i][j];
             cou+=ma[i][j];
   }
           dfs(1,1,1,ma[1][1]); 
            cout<<mi<<endl;
    return 0;
}




全部评论

相关推荐

昨天 11:26
清华大学 Java
打开电脑,思绪又回到了7月份刚开始的时候,感觉这个月过的如梦如幻,发生了太多事,也算是丰富了我本就是平淡的人生吧太早独立的我习惯了一切都是自己做决定,拥有绝对的决定权,而且永远不会听取别人的建议。我就是那个恋爱四年出轨的男主啦,感觉既然在牛客开了这个头,那我就要做个有始有终的人。从我出轨到结束再到和女朋友和好如初真的太像一场梦了,短短的一个月我经历了太多,也成长了很多,放下了那些本就不属于我的,找回了那些我不该放弃的。我的人生丰富且多彩,但人不能一直顺,上天总会让你的生活中出点乱子,有好有坏,让你学会一些东西,让你有成长。我和女朋友的恋爱四年太过于平淡,日常除了会制造一些小浪漫之外,我们的生活...
段哥亡命职场:不得不说,我是理解你的,你能发出来足见你是个坦诚的人,至少敢于直面自己的内心和过往的过错。 这个世界没有想象中那样非黑即白,无论是农村还是城市,在看不见的阴影里,多的是这样的事。 更多的人选择站在制高点去谩骂,一方面是社会的道德是需要制高点的,另一方面,很多人不经他人苦,却劝他人善。 大部分的我们,连自己生命的意义尚且不能明晰,道德、法律、困境,众多因果交织,人会迷失在其中,只有真的走出来之后才能看明白,可是没走出来的时候呢?谁又能保证自己能走的好,走的对呢? 可是这种问题有些人是遇不到的,不去追寻,不去探寻,也就没了这些烦恼,我总说人生的意义在过程里,没了目标也就没了过程。 限于篇幅,没法完全言明,总之,这世界是个巨大的草台班子,没什么过不去了,勇敢面对,革故鼎新才是正确,祝你早日走出来。查看图片
点赞 评论 收藏
分享
程序员小白条:这比例牛逼,750:1
点赞 评论 收藏
分享
投递拓竹科技等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务