第四届蓝桥杯省赛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组 剪格子相关推荐

  1. [第四届蓝桥杯省赛C++B组]省赛全题目题解

    文章目录 快速分支通道 1.高斯日记 来源: 第四届蓝桥杯省赛C++A/B组 算法标签 模拟 题目描述 输出格式 思路 CPP代码 2.马虎的算式 题目描述: 算法标签: 枚举 题目答案: 题目思路: ...

  2. 蓝桥杯国赛C++A组B组题解整理(第八、七、六、五、四届)

    [写在前面的话19.04.04] 今年省赛的结果出的意外得快,有很多小伙伴来和我分享他们进了省一的喜悦,并问我啥时候更新国赛题解,emmm--不是我不想更新,实在是抽不出时间,有缘再更--虽然不更新题 ...

  3. 2020年第十一届蓝桥杯 - 国赛 - Python大学组 - H.答疑

    题目链接 Ideas 2020年第十一届蓝桥杯 - 国赛 - Python大学组 - H.答疑 Code Python if __name__ == '__main__':n = int(input( ...

  4. 2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数

    2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数 在线评测 Ideas 对于一个纯循环小数,假设循环节为l,则小数为0.llll-,转换为分数就是 l / (10 ** n ...

  5. 2020年第十一届蓝桥杯 - 省赛 - Python大学组 - D.蛇形填数

    这道题同样还是: 2020年第十一届蓝桥杯 - 省赛 - C/C++研究生组 - D.蛇形填数 2020年第十一届蓝桥杯 - 省赛 - Java研究生组 - D.蛇形填数 Ideas 这题其实严格意义 ...

  6. 第十二届蓝桥杯省赛JAVA B组杨辉三角形个人题解

    第十二届蓝桥杯省赛JAVA B组杨辉三角形个人题解(非满分) import java.util.Scanner; public class Main {public static void main( ...

  7. 糖果(2019第十届蓝桥杯省赛C++A组I题) 解题报告(状压dp) Apare_xzc

    糖果(2019第十届蓝桥杯省赛C++A组I题) 解题报告(状压dp) xzc 2019/4/5 试题 I: 糖果 时间限制: 1.0s 内存限制: 256.0MB 本题总分:25分 [问题描述]    ...

  8. [第六届蓝桥杯省赛C++B组]三羊献瑞

    题目来源:第六届蓝桥杯省赛C++B组 算法标签:全排列 题目描述: 观察下面的加法算式: 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字. 请你填写"三羊献瑞"所代表的4 ...

  9. 第十三届蓝桥杯省赛 python B组复盘(三道代码题全AC居然省一了)

    第十三届蓝桥杯省赛 python B组复盘(三道代码题全AC居然省一了)

  10. 【蓝桥杯Web】大一小白参与蓝桥杯模拟赛二期web组体会

    目录 前言 一.相关比赛介绍 1.ACM国际大学生程序设计竞赛 2.蓝桥杯 3.GPLT团队程序设计天梯赛 4.leetcode周赛和双周赛 5.PAT 二.蓝桥杯 1.应该参加蓝桥杯吗? 2.如何进 ...

最新文章

  1. 使用 ale.js 制作一个小而美的表格编辑器(3)
  2. mysql 对多列进行排序 分组_数据库的多列分组
  3. 【深度学习】Transfomer在文本处理上的应用(风格识别)
  4. ajax 小木虫,NIST数据库中Acc. 是什么 小木虫
  5. 使用Servlet 3.0,Redis / Jedis和CDI的简单CRUD –第1部分
  6. 【51单片机快速入门指南】2.4:74HC595、LED点阵屏及其SPI控制
  7. 你知道应聘上一份机器学习的工作需要哪些条件吗?
  8. 2014年12月26日
  9. 深度优先搜索——单词方阵(洛谷 P1101)
  10. python中逻辑回归结果怎么看_python – 为什么statsmodels不能重现我的R逻辑回归结果?...
  11. class属性表种类集合,以及字段详解
  12. MFC鼠标单击截获鼠标双击事件,且无法记录单击的数据的解决方案
  13. php中字符串与数组的相互转化explode(separator,$str)与implode(separator,$arr)
  14. ospf(MGRE的星型结构和全连结构)
  15. 论QQ如何发大菜狗表情
  16. C++ and C# 从TLS握手二进制中获取SNI(服务器名称指示)域名
  17. Android浮窗权限判断
  18. kafka-eagle-2.0.1安装及使用(超详细)
  19. GitHub 小白入门
  20. Spring之Specification复杂查询和Criteria查询

热门文章

  1. WDS桥接副路由器有线上网方法
  2. 网站打不开如何解决?教你4个方法搞定它!
  3. systemctl开机启动设置
  4. 《牛奶可乐经济学》读书笔记 | 用经济学点亮生活
  5. 28 JS基础之--String包装数据类型方法总结
  6. latex如何插入图片格式
  7. 如何将LaTeX公式拷贝到Word中
  8. python-pygame怀旧游戏之超级玛丽
  9. 呕心沥血写了三天3两夜24k字的MySQL详细教程
  10. 7个经典小故事给在职场困倦的你打打气