剪格子

如图p1.jpg所示,3 x 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

再例如:
用户输入:
4 3
1 1 1 1
1 30 80 2
1 1 1 100

则程序输出:
10

(参见p2.jpg)

资源约定:
峰值内存消耗 < 64M
CPU消耗 < 5000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

代码

#include <iostream>
#include <algorithm>using namespace std;int m, n;
int total;
int g[10][10];
int vis[10][10];
int ans = 100;void f(int i, int j, int sum, int cnt) {if (sum > total / 2) return;if (sum == total / 2) {ans = min(ans, cnt);return;}vis[i][j]=1;
//  可以有四个分支往下走if (i + 1 <= n-1&&vis[i+1][j]==0)f(i + 1, j, sum + g[i][j], cnt + 1);if (i - 1 >= 0&&vis[i-1][j]==0)f(i - 1, j, sum + g[i][j], cnt + 1);if (j + 1 <= m-1&&vis[i][j+1]==0)f(i, j + 1, sum + g[i][j], cnt + 1);if (j - 1 >= 0&&vis[i][j-1]==0)f(i, j - 1, sum + g[i][j], cnt + 1);vis[i][j]=0;
}int main(int argc, const char *argv[]) {scanf("%d %d", &m, &n);for (int i = 0; i < n; ++i) {for (int j = 0; j < m; ++j) {scanf("%d", &g[i][j]);total += g[i][j];}}f(0, 0, 0, 0);if(ans!=100)printf("%d\n",ans);elseprintf("%d\n",0);return 0;
}

征战蓝桥 —— 2013年第四届 —— C/C++A组第9题——剪格子相关推荐

  1. 征战蓝桥 —— 2013年第四届 —— C/C++A组第10题——大臣的旅费

    大臣的旅费 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市.为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首 ...

  2. 征战蓝桥 —— 2013年第四届 —— C/C++A组第8题——买不到的数目

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

  3. 征战蓝桥 —— 2013年第四届 —— C/C++A组第6题——逆波兰表达式

    标题:逆波兰表达式 正常的表达式称为中缀表达式,运算符在中间,主要是给人阅读的,机器求解并不方便. 例如:3 + 5 * (2 + 6) - 1 而且,常常需要用括号来改变运算次序. 相反,如果使用逆 ...

  4. 征战蓝桥 —— 2013年第四届 —— C/C++A组第7题——错误票据

    标题:错误票据 某涉密单位下发了某种票据,并要在年终全部收回. 每张票据有唯一的ID号.全年所有票据的ID号是连续的,但ID的开始数码是随机选定的. 因为工作人员疏忽,在录入ID号的时候发生了一处错误 ...

  5. 征战蓝桥 —— 2013年第四届 —— C/C++A组第5题——前缀判断

    题目标题:前缀判断 如下的代码判断 needle_start指向的串是否为haystack_start指向的串的前缀,如不是,则返回NULL. 比如:"abcd1234" 就包含了 ...

  6. 征战蓝桥 —— 2013年第四届 —— C/C++A组第4题——颠倒的价牌

    标题: 颠倒的价牌 小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店.其标价都是4位数字(即千元不等).小李为了标价清晰.方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了 ...

  7. 征战蓝桥 —— 2013年第四届 —— C/C++A组第3题——振兴中华

    标题: 振兴中华 小明参加了学校的趣味运动会,其中的一个项目是:跳格子.地上画着一些格子,每个格子里写一个字,如下所示: 比赛时,先站在左上角的写着"从"字的格子里,可以横向或纵向 ...

  8. 连号区间数(2013年第四届c/c++ b组第10题)

    题目描述 标题:连号区间数 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个 ...

  9. 征战蓝桥 —— 2017年第八届 —— C/C++A组第5题——字母组串

    题目 由 A,B,C 这3个字母就可以组成许多串. 比如:"A","AB","ABC","ABA","AACB ...

最新文章

  1. [POI2009]KAM-Pebbles BZOJ1115 [ 待填坑 ] 博弈
  2. 计算机专业学嵌入式好吗?嵌入式到底该怎样学呢?
  3. android qq分享自动弹出,史上最详细Android集成QQ,微信,微博分享(不要第三方)持续更新中...
  4. log4j 标准配置模板:
  5. Java ObjectOutputStream writeDouble()方法与示例
  6. OpenGL:纹理映射bmp图像
  7. HTML5应用程序缓存Application Cache
  8. 开源 数据查询 工具_6个用于数据新闻的开源工具
  9. 新常态 新核心,浪潮商用机器为关键行业数字化转型打造新Power
  10. 8250cdn清零 lh_兄弟 HL-L8250CDN驱动
  11. 学习记录之显示屏语言模块确定,星瞳学习
  12. Mac中Safari浏览器转换IE各版本
  13. awgn信道c语言程序,关于awgn信道的程序求解~!
  14. 黑桃符号java怎么打印出来_java入门基础(四)
  15. 富格林金业:贵金属投资的优势体现在哪里
  16. 冰河浅析 - 揭开木马的神秘面纱(下)
  17. 双态运维联盟工作会议暨2017年度双态运维大会乌镇峰会筹备会在新华三杭州园区召开...
  18. 永中科技破产清算中的疑问
  19. debian重启ssh服务_EUserv 德国永久免费VPS申请,仅有IPv6网络 另附IPv6服务器建站教程...
  20. riplus子主题极致美化。Riplus子主题QIW主题二开美化主题免费下载

热门文章

  1. DevExpress GridControl使用方法总结
  2. 微信开发接口调用(前端+.net服务端)
  3. 【★★★★★模板专区★★★★★】
  4. html绑定多个事件,jquery可以给多个元素绑定同一事件吗?
  5. php制作曲线柱形图的框架,用GD图库生成横竖柱状图折线图的类_php
  6. Java程序设计基础--流程控制
  7. Vuex新手的理解与使用
  8. tomcat常见错误处理
  9. nginx websocket proxy
  10. const 内联 枚举 宏