题目描述
历届试题 剪格子
时间限制:1.0s 内存限制:256.0MB

问题描述
如下图所示,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。
输出
输出一个整数,表示在所有解中,包含左上角的分割区可能包含的最小的格子数目。
样例输入
3 3
10 1 52
20 30 1
1 2 3
样例输出
3
思路:这个题目说的云里雾里,与其说是左上方的,还不如说包含左上角的那个元素的部分,最小是多少呢。还有一个坑点,就是先输入的列数,在输入的行数。加一点点的剪枝,整体就是一个深搜+回溯。
代码如下:

#include<bits/stdc++.h>
#define ll long long
using namespace std;const int maxx=15;
int d[][2]={{1,0},{0,1},{-1,0},{0,-1}};
int a[maxx][maxx];
int vis[maxx][maxx];
int n,m,sum=0;inline void dfs(int x,int y,int num,int &ans,int cnt)
{if(num==sum/2){ans=min(ans,cnt);return ;}if(num>sum/2||cnt>ans) return ;for(int i=0;i<4;i++){int tx=x+d[i][0];int ty=y+d[i][1];if(tx<1||ty<1||tx>n||ty>m||vis[tx][ty]) continue;vis[tx][ty]=1;dfs(tx,ty,num+a[tx][ty],ans,cnt+1);vis[tx][ty]=0;}
}
int main()
{scanf("%d%d",&m,&n);memset(vis,0,sizeof(vis));for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) scanf("%d",&a[i][j]),sum+=a[i][j];if(sum&1) cout<<0<<endl;else{int ans=maxx*maxx;vis[1][1]=1;dfs(1,1,a[1][1],ans,1);if(ans==maxx*maxx) cout<<0<<endl;else cout<<ans<<endl;}return 0;
}

努力加油a啊,(o)/~

[蓝桥杯][2013年第四届真题]剪格子(dfs)相关推荐

  1. [蓝桥杯][2013年第四届真题]剪格子-dfs

    题目描述 历届试题 剪格子 时间限制:1.0s 内存限制:256.0MB 问题描述 如下图所示,3 x 3 的格子中填写了一些整数. 我们沿着图中的星号线剪开,得到两个部分,每个部分的数字和都是60. ...

  2. [蓝桥杯][2013年第四届真题]危险系数-dfs+图的遍历

    题目描述 问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定义一个危险 ...

  3. 问题 1446: [蓝桥杯][2013年第四届真题]核桃的数量

    问题 1446: [蓝桥杯][2013年第四届真题]核桃的数量 时间限制: 1Sec 内存限制: 128MB 提交: 2274 解决: 1438 题目描述 小张是软件项目经理,他带领3个开发组.工期紧 ...

  4. [蓝桥杯][2013年第四届真题]买不到的数目-模拟,数论

    题目描述 小明开了一家糖果店.他别出心裁:把水果糖包成4颗一包和7颗一包的两种.糖果不能拆包卖. 小朋友来买糖的时候,他就用这两种包装来组合.当然有些糖果数目是无法组合出来的,比如要买 10 颗糖. ...

  5. [蓝桥杯][2013年第四届真题]核桃的数量-枚举(水题)

    题目描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑).他的要求是: 各组的核桃数量必须相同 各组内必须能平分核桃(当然是不能打 ...

  6. 蓝桥杯训练题1427: [蓝桥杯][2013年第四届真题]买不到的数目【筛选符合题目的数字。有点类似筛素数】

    题目链接: https://www.dotcpp.com/oj/problem1427.html 题目描述: 思路: 首先就是感觉这个题目好像有点不严谨.题目说的是输入为两个正整数,而且只要不大于10 ...

  7. [蓝桥杯][2013年第四届真题]带分数

    题目描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次( ...

  8. [蓝桥杯][2013年第四届真题]危险系数(暴力+dfs)

    题目描述 问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定义一个危险 ...

  9. [蓝桥杯][2013年第四届真题]买不到的数目(动态规划)

    题目描述 小明开了一家糖果店.他别出心裁:把水果糖包成4颗一包和7颗一包的两种.糖果不能拆包卖. 小朋友来买糖的时候,他就用这两种包装来组合.当然有些糖果数目是无法组合出来的,比如要买 10 颗糖. ...

最新文章

  1. Day 13 老师应该要让课堂有趣吗
  2. Cortex-M3内核中的异常
  3. swift hidesBottomBarWhenPushed 设置界面
  4. docker集群搭建(k8s)
  5. python minimize_Python数学规划案例一
  6. 燃鹅小助手自动抽奖源码
  7. 建立Groovy开发环境
  8. Python爬虫-《神雕侠侣》
  9. 201312-1-出现次数最多的数
  10. 蓝屏:微软撤回 Windows 8.1 八月更新等4个补丁
  11. 警惕!全球酒店门锁很容易受到黑客攻击
  12. GLM(General Language Model)代码分析
  13. 杜鹏的个人博客 Flex使用Blazeds与Java交互及自定义对象转换详解
  14. Apple Watch怎么设置蜂窝网络
  15. stm32wb55 flash
  16. c语言switch问候语,C语言switch语句用法详解
  17. 插件化原理解析——广播的管理
  18. 历年考研英语(一)真题来源汇总
  19. 使用 qrcodejs2 生成二维码详细API和参数
  20. 中国 CA 市场 分析

热门文章

  1. swift5 字符串格式化保留2 位,缺0自动补0
  2. centos7磁盘逻辑分区命令_Centos7 磁盘分区概念
  3. 小学计算机房简单介绍,介绍计算机教室的小学作文我们学校的机房
  4. ansys流固耦合分析与工程实例模型文件_平板射流冲击流固耦合分析
  5. Qt元对象QMetaObject的indexOfSlot等函数获取类方法注意问题
  6. 用Setup Factory打包Visual C++ 2008开发的程序心得总结
  7. fabric零碎知识
  8. 如何在VMware8虚拟机里安装Xp GHOST系统 解决不能启动Xp系统方法
  9. SQL Server的Execute As与连接池结合使用的测试
  10. 【2014年计划】工作,学习两不误