[蓝桥杯][2013年第四届真题]剪格子(dfs)
题目描述
历届试题 剪格子
时间限制: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)相关推荐
- [蓝桥杯][2013年第四届真题]剪格子-dfs
题目描述 历届试题 剪格子 时间限制:1.0s 内存限制:256.0MB 问题描述 如下图所示,3 x 3 的格子中填写了一些整数. 我们沿着图中的星号线剪开,得到两个部分,每个部分的数字和都是60. ...
- [蓝桥杯][2013年第四届真题]危险系数-dfs+图的遍历
题目描述 问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定义一个危险 ...
- 问题 1446: [蓝桥杯][2013年第四届真题]核桃的数量
问题 1446: [蓝桥杯][2013年第四届真题]核桃的数量 时间限制: 1Sec 内存限制: 128MB 提交: 2274 解决: 1438 题目描述 小张是软件项目经理,他带领3个开发组.工期紧 ...
- [蓝桥杯][2013年第四届真题]买不到的数目-模拟,数论
题目描述 小明开了一家糖果店.他别出心裁:把水果糖包成4颗一包和7颗一包的两种.糖果不能拆包卖. 小朋友来买糖的时候,他就用这两种包装来组合.当然有些糖果数目是无法组合出来的,比如要买 10 颗糖. ...
- [蓝桥杯][2013年第四届真题]核桃的数量-枚举(水题)
题目描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑).他的要求是: 各组的核桃数量必须相同 各组内必须能平分核桃(当然是不能打 ...
- 蓝桥杯训练题1427: [蓝桥杯][2013年第四届真题]买不到的数目【筛选符合题目的数字。有点类似筛素数】
题目链接: https://www.dotcpp.com/oj/problem1427.html 题目描述: 思路: 首先就是感觉这个题目好像有点不严谨.题目说的是输入为两个正整数,而且只要不大于10 ...
- [蓝桥杯][2013年第四届真题]带分数
题目描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714. 还可以表示为:100 = 82 + 3546 / 197. 注意特征:带分数中,数字1~9分别出现且只出现一次( ...
- [蓝桥杯][2013年第四届真题]危险系数(暴力+dfs)
题目描述 问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定义一个危险 ...
- [蓝桥杯][2013年第四届真题]买不到的数目(动态规划)
题目描述 小明开了一家糖果店.他别出心裁:把水果糖包成4颗一包和7颗一包的两种.糖果不能拆包卖. 小朋友来买糖的时候,他就用这两种包装来组合.当然有些糖果数目是无法组合出来的,比如要买 10 颗糖. ...
最新文章
- Day 13 老师应该要让课堂有趣吗
- Cortex-M3内核中的异常
- swift hidesBottomBarWhenPushed 设置界面
- docker集群搭建(k8s)
- python minimize_Python数学规划案例一
- 燃鹅小助手自动抽奖源码
- 建立Groovy开发环境
- Python爬虫-《神雕侠侣》
- 201312-1-出现次数最多的数
- 蓝屏:微软撤回 Windows 8.1 八月更新等4个补丁
- 警惕!全球酒店门锁很容易受到黑客攻击
- GLM(General Language Model)代码分析
- 杜鹏的个人博客 Flex使用Blazeds与Java交互及自定义对象转换详解
- Apple Watch怎么设置蜂窝网络
- stm32wb55 flash
- c语言switch问候语,C语言switch语句用法详解
- 插件化原理解析——广播的管理
- 历年考研英语(一)真题来源汇总
- 使用 qrcodejs2 生成二维码详细API和参数
- 中国 CA 市场 分析
热门文章
- swift5 字符串格式化保留2 位,缺0自动补0
- centos7磁盘逻辑分区命令_Centos7 磁盘分区概念
- 小学计算机房简单介绍,介绍计算机教室的小学作文我们学校的机房
- ansys流固耦合分析与工程实例模型文件_平板射流冲击流固耦合分析
- Qt元对象QMetaObject的indexOfSlot等函数获取类方法注意问题
- 用Setup Factory打包Visual C++ 2008开发的程序心得总结
- fabric零碎知识
- 如何在VMware8虚拟机里安装Xp GHOST系统 解决不能启动Xp系统方法
- SQL Server的Execute As与连接池结合使用的测试
- 【2014年计划】工作,学习两不误