蓝桥杯.剪格子(DFS)

2023-10-31

 Question:

Solve:

深搜板子题。分成两部分,两部分的数字和相同,dfs去创造路径,然后比对路径上的数字和与剩余点的数字和。

优化点

读入时候先求和sum,路径和ans另算,直接去判断ans是不是sum的一半

ans > sum/2之后不再可能出现成立的路径

Code:

#include <bits/stdc++.h>
using namespace std;
//sum原总和,ans:dfs所走路径的数字总和,cnt:dfs所走路径的点的个数,res:答案
int a[12][12], n, m, sum, ans, res, cnt;
int dir[4][2] = {1,0,-1,0,0,1,0,-1};  //四个方向
bool judge[12][12]; //判断每一个点是否走过
void dfs(int x, int y)
{
    //条件符合,选出最小的路径点数
    if(ans == sum/2) {
        res = min(res ,cnt);
        return ;
    }
    //ans>sum,之后ans一直加,sum一直减,不可能满足
    if(ans > sum/2) return ;
    //遍历四个方向
    for(int i = 0; i < 4; i++){
        int dx = x + dir[i][0];
        int dy = y + dir[i][1];
        //边界、点检测
        if(dx<=0 || dy<=0 || dx>n || dy>m || judge[dx][dy]==true) continue;
        cnt++; ans += a[dx][dy]; judge[dx][dy] = true;
        dfs(dx,dy);
        cnt--; ans -= a[dx][dy]; judge[dx][dy] = false;
    }
}
int main(void)
{
    memset(judge,false,sizeof(judge));
    sum = 0;
    cin >>m >> n;
    for(int i = 1; i <= n; i++)
    for(int j = 1; j <= m; j++)
    {
        cin >>a[i][j];
        sum += a[i][j];
    }
    //初始化起始
    cnt = 1;  res = 110;
    ans = a[1][1];
    dfs(1,1);
    //输出结果res
    if(res == 110) cout <<0;
    else cout <<res;
    return 0;
}

声明:图片均来源于蓝桥杯官网,以个人刷题整理为目的,如若侵权,请联系删除~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝桥杯.剪格子(DFS) 的相关文章

随机推荐

  • Xcode 之自己编译静态库

    今天介绍下 如何利用Xcode 新建一个静态库 以及如何编译成i386 armv7 armv7s 等平台架构 开发环境 MAC OS X 10 9 4 Xcode 5 0 2 背景知识 库分两种 静态库 a lib 和 动态库 so dll
  • 学员管理系统——面向对象

    文章目录 前言 基本思路 Student py main py StudentManage py 菜单 menu 根据菜单实现程序的大概逻辑 add student 添加学员信息 delete student 删除学员信息 modify s
  • STM32-定时器详解

    目录 前言 一 定时器基本介绍 1 STM32定时器 2 通用定时器功能和特点 3 计数器模式 4 定时器工作原理 a 定时器框图 b 时钟产生器部分 c 时基单元 d 输入捕获通道 e 输出比较通道 PWM 二 定时器中断应用 1 内部时
  • SpringBoot基本操作(四)——SpringBoot使用RedisTemplate整合Redis(有demo)

    SpringBoot2 0笔记 一 SpringBoot基本操作 环境搭建及项目创建 有demo 二 SpringBoot基本操作 使用IDEA打war包发布及测试 三 SpringBoot基本操作 SpringBoot整合SpringDa
  • Visual Studio Community 2019 评估期结束,登录一直失败问题

    今天打开VS2019 发现它试用期过期了需要登录 点击登录 发现一直说浏览器版本太低 需要升级浏览器 真正点击下载Edge浏览器 它又不直接跳转到该浏览器中 反复试了好多次 简直让人崩溃 后来网上搜索到用设备代码流的方式可以解决 https
  • 简图记录-驱动debug之打印总结(printk、dmesg、logcat)

    简图记录总结 在驱动开发过程中 常会用到一些打印做问题定位 无论是提前设计或者调试过程中添加 打印都是一种常用的手段 以下为打印相关问题总结 一 常见驱动打印的添加与查看 1 内核打印printk 概念 printk是内核中根据日志级别向控
  • shell编程必须会的30道题目

    linux运维人员必会的30道shell编程面试题 一 序言 前几天一个做开发的朋友发给我一个链接 http oldboy blog 51cto com 2561410 1632876 from singlemessage isappins
  • linux启动jar包指定日志输出目录下,linux 启动jar包 指定yml配置文件和输入日志文件...

    命令为 nohup java jar project jar spring config location home project conf application yml gt home project conf nohup out 2
  • ZK的选举算法

    一 前言 前面学习了Zookeeper服务端的相关细节 其中对于集群启动而言 很重要的一部分就是Leader选举 接着就开始深入学习Leader选举 二 Leader选举 2 1 Leader选举概述 Leader选举是保证分布式数据一致性
  • 从0开始写Vue项目-Vue实现用户个人信息界面上传头像

    从0开始写Vue项目 环境和项目搭建 慕言要努力的博客 CSDN博客 从0开始写Vue项目 Vue2集成Element ui和后台主体框架搭建 慕言要努力的博客 CSDN博客 从0开始写Vue项目 Vue页面主体布局和登录 注册页面 慕言要
  • RocketMQ:粗略认识RocketMQ以及在Window部署单机模式

    一 粗略认识RocketMQ RocketMQ主要解决当访问服务数量超过系统性能瓶颈的问题 大概的解决思路就是先把信息收集起来 然后按照自己的速度一步步处理 而系统的访问者在把信息发送给RocketMQ之后 可以不用等返回结果 就可以先去忙
  • 移动端前端适配方案(总结) -- 面试重点

    在网上搜了一下 很多面试都会被问到移动端适配方法的问题 最近看了一些文章 这里总结一下 首先 谈一下目前为止出现的一些关于移动端适配的技术方案 1 通过媒体查询的方式即CSS3的meida queries 2 以天猫首页为代表的 flex
  • Android动态申请权限知识

    1 Android6 0 APIlevel23 开始targetSdkVersion gt 23的应用必须在运行时动态申请权限 2 权限请求对话框是操作系统进行管理的 应用无法也不应该干预 3 系统对话框描述的是权限组而不是某个具体权限 4
  • cgwin 中国镜像

    2019独角兽企业重金招聘Python工程师标准 gt gt gt http mirrors 163 com cygwin 转载于 https my oschina net famoustone blog 886193
  • DLNA的一个场景的工作过程

    场景 用户将手机A中的媒体内容播放到电视B上 DMC DMR 在这个场景中 前提是 A和B必须连接到同一个局域网中 假定电视B先接入局域网 手机A后接入局域网 然后再进行播放操作 那么该场景大概是这样的 B接入局域网以后 B需要建立多播so
  • 电脑设置定时关机的5种方法

    转自 微点阅读 https www weidianyuedu com 方法汇总于网络 仅供参考 目录 如何用系统命令设置定时关机 两款定时关机软件 小而好用 功能强大 如何用任务计划程序设置 常用的电脑软件如何设置 包括360安全卫士 迅雷
  • Java中以英文逗号分割的字符串在前端添加时正则判断

    Java中以英文逗号分割的字符串在前端添加时正则判断 只能是英文状态逗号且只能以逗号隔开不能以逗号结尾 只能是英文状态逗号 不能有中文逗号 var m uff0c if goodstype match m alert 不能有中文逗号 ret
  • sql注入之万能密码总结

    万能密码 万能密码原理 原验证登陆语句 SELECT FROM admin WHERE Username username AND Password md5 password 输入 1 or 1 1 or 1 1万能密码语句变为 SELEC
  • systemd启动mysql后一直卡住,Systemd Mysql不会停止

    升级到15 04后 我有很多乐趣了解systemd 我想我一切正常 除了我无法阻止mysql service systemctl命令只是挂起而且mysql一直在运行 有没有其他人经历过这个或者可能知道发生了什么 解决方法 我有同样的问题 升
  • 蓝桥杯.剪格子(DFS)

    Question Solve 深搜板子题 分成两部分 两部分的数字和相同 dfs去创造路径 然后比对路径上的数字和与剩余点的数字和 优化点 读入时候先求和sum 路径和ans另算 直接去判断ans是不是sum的一半 ans gt sum 2