征战蓝桥 —— 2013年第四届 —— C/C++A组第9题——剪格子
剪格子
如图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题——剪格子相关推荐
- 征战蓝桥 —— 2013年第四届 —— C/C++A组第10题——大臣的旅费
大臣的旅费 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市.为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首 ...
- 征战蓝桥 —— 2013年第四届 —— C/C++A组第8题——买不到的数目
买不到的数目 小明开了一家糖果店.他别出心裁:把水果糖包成4颗一包和7颗一包的两种.糖果不能拆包卖. 小朋友来买糖的时候,他就用这两种包装来组合.当然有些糖果数目是无法组合出来的,比如要买 10 颗糖 ...
- 征战蓝桥 —— 2013年第四届 —— C/C++A组第6题——逆波兰表达式
标题:逆波兰表达式 正常的表达式称为中缀表达式,运算符在中间,主要是给人阅读的,机器求解并不方便. 例如:3 + 5 * (2 + 6) - 1 而且,常常需要用括号来改变运算次序. 相反,如果使用逆 ...
- 征战蓝桥 —— 2013年第四届 —— C/C++A组第7题——错误票据
标题:错误票据 某涉密单位下发了某种票据,并要在年终全部收回. 每张票据有唯一的ID号.全年所有票据的ID号是连续的,但ID的开始数码是随机选定的. 因为工作人员疏忽,在录入ID号的时候发生了一处错误 ...
- 征战蓝桥 —— 2013年第四届 —— C/C++A组第5题——前缀判断
题目标题:前缀判断 如下的代码判断 needle_start指向的串是否为haystack_start指向的串的前缀,如不是,则返回NULL. 比如:"abcd1234" 就包含了 ...
- 征战蓝桥 —— 2013年第四届 —— C/C++A组第4题——颠倒的价牌
标题: 颠倒的价牌 小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店.其标价都是4位数字(即千元不等).小李为了标价清晰.方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了 ...
- 征战蓝桥 —— 2013年第四届 —— C/C++A组第3题——振兴中华
标题: 振兴中华 小明参加了学校的趣味运动会,其中的一个项目是:跳格子.地上画着一些格子,每个格子里写一个字,如下所示: 比赛时,先站在左上角的写着"从"字的格子里,可以横向或纵向 ...
- 连号区间数(2013年第四届c/c++ b组第10题)
题目描述 标题:连号区间数 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个 ...
- 征战蓝桥 —— 2017年第八届 —— C/C++A组第5题——字母组串
题目 由 A,B,C 这3个字母就可以组成许多串. 比如:"A","AB","ABC","ABA","AACB ...
最新文章
- [POI2009]KAM-Pebbles BZOJ1115 [ 待填坑 ] 博弈
- 计算机专业学嵌入式好吗?嵌入式到底该怎样学呢?
- android qq分享自动弹出,史上最详细Android集成QQ,微信,微博分享(不要第三方)持续更新中...
- log4j 标准配置模板:
- Java ObjectOutputStream writeDouble()方法与示例
- OpenGL:纹理映射bmp图像
- HTML5应用程序缓存Application Cache
- 开源 数据查询 工具_6个用于数据新闻的开源工具
- 新常态 新核心,浪潮商用机器为关键行业数字化转型打造新Power
- 8250cdn清零 lh_兄弟 HL-L8250CDN驱动
- 学习记录之显示屏语言模块确定,星瞳学习
- Mac中Safari浏览器转换IE各版本
- awgn信道c语言程序,关于awgn信道的程序求解~!
- 黑桃符号java怎么打印出来_java入门基础(四)
- 富格林金业:贵金属投资的优势体现在哪里
- 冰河浅析 - 揭开木马的神秘面纱(下)
- 双态运维联盟工作会议暨2017年度双态运维大会乌镇峰会筹备会在新华三杭州园区召开...
- 永中科技破产清算中的疑问
- debian重启ssh服务_EUserv 德国永久免费VPS申请,仅有IPv6网络 另附IPv6服务器建站教程...
- riplus子主题极致美化。Riplus子主题QIW主题二开美化主题免费下载
热门文章
- DevExpress GridControl使用方法总结
- 微信开发接口调用(前端+.net服务端)
- 【★★★★★模板专区★★★★★】
- html绑定多个事件,jquery可以给多个元素绑定同一事件吗?
- php制作曲线柱形图的框架,用GD图库生成横竖柱状图折线图的类_php
- Java程序设计基础--流程控制
- Vuex新手的理解与使用
- tomcat常见错误处理
- nginx websocket proxy
- const 内联 枚举 宏