第四届蓝桥杯省赛C++A组 剪格子
第四届蓝桥杯省赛C++A组 剪格子
题目链接:
http://lx.lanqiao.cn/problem.page?gpid=T27
思路:
直接dfs搜索一波,以左上角为起点。
说明: 有些特殊情况无法解决:
1.不经过左上角
例如:这种情况存在一个环,也会导致解法加一(顺时针的环和逆时针的环)
2.dfs搜索路径类似一笔画,类似T字形无法搜索
3.不过蓝桥杯的测试系统,也没考虑以上两种情况
代码:
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cmath>
#define ll long long
using namespace std;
int half,st=1000,count=0;
//half为总和的一半,st为走的步数,count表示count种可行的解法
int n,m;
int a[10][10];//待输入数组
int vis[10][10];//标记数组
int plus1[4][2]= {1,0 ,0,1, -1,0, 0,-1};//四种走法,下,右,上,左
void dfs(int x,int y,int step) {//x,y是坐标,step是步数if(x<0||x>=n||y<0||y>=m)//超过边界,returnreturn;if(x>=0&&x<m&&y>=0&&y<n) {int sum=0;for(int i=0; i<n; i++) {for(int j=0; j<m; j++)if(vis[i][j]==1)sum+=a[i][j];//计算已走过的数的总和}if(sum==half) {//满足条件count++;//解法加一if(step+1<st)//比较不同解法的步数st=step+1;
//st=step+1(例如当左上角第一个格子的数就等于half,step=0,显然这是step需要加一)return;}}for(int i=0; i<4; i++) {//遍历四种走法,即四个子节点(实际是一个父节点和三个子节点)int x1=x+plus1[i][0];int y1=y+plus1[i][1];if(!vis[x1][y1]) {//避免访问父节点vis[x1][y1]=1;//标记dfs(x1,y1,step+1);vis[x1][y1]=0;//回溯}}
}
int main() {cin>>m>>n;int sum=0;for(int i=0; i<n; i++)for(int j=0; j<m; j++) {cin>>a[i][j];sum+=a[i][j];}half=sum/2;//计算halfvis[0][0]=1;//默认第一个格子为起点 //也可以不置vis[0][0]=1,这样st=step,不用加一了 dfs(0,0,0);if(count==0)//无法分割输出0cout<<0<<endl;else//可以分割输出包含左上角最少的cout<<st<<endl;return 0;
}
第四届蓝桥杯省赛C++A组 剪格子相关推荐
- [第四届蓝桥杯省赛C++B组]省赛全题目题解
文章目录 快速分支通道 1.高斯日记 来源: 第四届蓝桥杯省赛C++A/B组 算法标签 模拟 题目描述 输出格式 思路 CPP代码 2.马虎的算式 题目描述: 算法标签: 枚举 题目答案: 题目思路: ...
- 蓝桥杯国赛C++A组B组题解整理(第八、七、六、五、四届)
[写在前面的话19.04.04] 今年省赛的结果出的意外得快,有很多小伙伴来和我分享他们进了省一的喜悦,并问我啥时候更新国赛题解,emmm--不是我不想更新,实在是抽不出时间,有缘再更--虽然不更新题 ...
- 2020年第十一届蓝桥杯 - 国赛 - Python大学组 - H.答疑
题目链接 Ideas 2020年第十一届蓝桥杯 - 国赛 - Python大学组 - H.答疑 Code Python if __name__ == '__main__':n = int(input( ...
- 2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数
2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数 在线评测 Ideas 对于一个纯循环小数,假设循环节为l,则小数为0.llll-,转换为分数就是 l / (10 ** n ...
- 2020年第十一届蓝桥杯 - 省赛 - Python大学组 - D.蛇形填数
这道题同样还是: 2020年第十一届蓝桥杯 - 省赛 - C/C++研究生组 - D.蛇形填数 2020年第十一届蓝桥杯 - 省赛 - Java研究生组 - D.蛇形填数 Ideas 这题其实严格意义 ...
- 第十二届蓝桥杯省赛JAVA B组杨辉三角形个人题解
第十二届蓝桥杯省赛JAVA B组杨辉三角形个人题解(非满分) import java.util.Scanner; public class Main {public static void main( ...
- 糖果(2019第十届蓝桥杯省赛C++A组I题) 解题报告(状压dp) Apare_xzc
糖果(2019第十届蓝桥杯省赛C++A组I题) 解题报告(状压dp) xzc 2019/4/5 试题 I: 糖果 时间限制: 1.0s 内存限制: 256.0MB 本题总分:25分 [问题描述] ...
- [第六届蓝桥杯省赛C++B组]三羊献瑞
题目来源:第六届蓝桥杯省赛C++B组 算法标签:全排列 题目描述: 观察下面的加法算式: 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字. 请你填写"三羊献瑞"所代表的4 ...
- 第十三届蓝桥杯省赛 python B组复盘(三道代码题全AC居然省一了)
第十三届蓝桥杯省赛 python B组复盘(三道代码题全AC居然省一了)
- 【蓝桥杯Web】大一小白参与蓝桥杯模拟赛二期web组体会
目录 前言 一.相关比赛介绍 1.ACM国际大学生程序设计竞赛 2.蓝桥杯 3.GPLT团队程序设计天梯赛 4.leetcode周赛和双周赛 5.PAT 二.蓝桥杯 1.应该参加蓝桥杯吗? 2.如何进 ...
最新文章
- 使用 ale.js 制作一个小而美的表格编辑器(3)
- mysql 对多列进行排序 分组_数据库的多列分组
- 【深度学习】Transfomer在文本处理上的应用(风格识别)
- ajax 小木虫,NIST数据库中Acc. 是什么 小木虫
- 使用Servlet 3.0,Redis / Jedis和CDI的简单CRUD –第1部分
- 【51单片机快速入门指南】2.4:74HC595、LED点阵屏及其SPI控制
- 你知道应聘上一份机器学习的工作需要哪些条件吗?
- 2014年12月26日
- 深度优先搜索——单词方阵(洛谷 P1101)
- python中逻辑回归结果怎么看_python – 为什么statsmodels不能重现我的R逻辑回归结果?...
- class属性表种类集合,以及字段详解
- MFC鼠标单击截获鼠标双击事件,且无法记录单击的数据的解决方案
- php中字符串与数组的相互转化explode(separator,$str)与implode(separator,$arr)
- ospf(MGRE的星型结构和全连结构)
- 论QQ如何发大菜狗表情
- C++ and C# 从TLS握手二进制中获取SNI(服务器名称指示)域名
- Android浮窗权限判断
- kafka-eagle-2.0.1安装及使用(超详细)
- GitHub 小白入门
- Spring之Specification复杂查询和Criteria查询