蓝桥杯.剪格子(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) 的相关文章

  • .NET 单点登录

    我一直在尝试使用 C 为 NET Web 应用程序实现 WEB SSO 服务提供程序插件 我将使用 shibboleth 身份提供商 我已经使用 OpenSAML 库为 java 应用程序实现了相同的功能 我想知道在 NET 应用程序中使用
  • Linq - 从表达式 创建表达式

    我有一个谓词Expression
  • 为什么我会收到未找到分析器的警告?

    我创建了一个玩具项目来检查最新的 NET 7 预览版 5 和正则表达式代码生成 它效果很好 所以我对现有项目应用了相同的更改 不是为了生产 而是为了个人生产力 由于某种原因 我收到这些警告 CS8032 An instance of ana
  • 生成多个随机数

    我想生成 25 个唯一的随机数并将它们列在控制台中 数字的长度应至少为 10 个字符 有什么简单的方法可以做到这一点吗 尝试将数字构建为字符串 并使用 HashSet 确保它们是唯一的 Random random new Random Ha
  • 深拷贝和动态转换 unique_ptr

    假设我有一个如下所示的类 class A virtual A class B public A class C public A 我还有一个 unique ptr 向量 它是这样声明的 std vector
  • 使用 C# 将多个音频样本混合到单个文件中

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个能够创建音频文件 mp3 或 wav 的库 NAudio http www codeple
  • 局部函数声明有什么用处吗?

    大多数像我这样的 C 程序员都曾犯过以下错误 class C int main C c declares a function c taking no arguments returning a C not as intended by m
  • 嵌入资源文件的路径

    我的资源文件中有一个图标 我想引用它 这是需要图标文件路径的代码 IWshRuntimeLibrary IWshShortcut MyShortcut MyShortcut IWshRuntimeLibrary IWshShortcut W
  • opencv中如何去除二值图像噪声?

    将图像转换为二值图像 黑白 后如果有任何噪音怎么办 我消除了那些不需要的噪音 您可以看到下图的黑色区域内有一些白噪声 我该如何去除噪声 使用opencv http img857 imageshack us img857 999 blackn
  • Linq 合并列表

    我的课 public class Foo public int A get set public List
  • Visual Studio 中列表框的上移、下移按钮[重复]

    这个问题在这里已经有答案了 我正在尝试制作一个上移按钮和一个下移按钮 以移动 Microsoft Visual Studio 2012 中列表框中的选定项目 我已经在 WDF jquery winforms 和其他一些表单中看到了其他示例
  • 如何将 Q 格式整数转换为浮点数(反之亦然)?

    我四处搜寻 找不到一个很好的问题来回答这个问题 给定一个整数 使用Q Format https en wikipedia org wiki Q number format 如何将该数字转换为普通浮点类型 反之亦然 如何将浮点类型转换为Q F
  • 调用异步方法在视图模型的构造函数中加载数据有警告

    我的视图包含一个 ListView 它显示来自互联网的一些数据 我创建一个异步方法来加载数据并在我的视图模型的构造函数中调用该方法 它有一个警告提示我现在使用await关键字 还有其他解决方案可以在构造函数中异步加载数据吗 有几种可以应用的
  • 我在使用 ado.net 时收到错误 Argument 2 may not be pass with ref keywords

    int t 0 cmd Parameters AddWithValue Res ref t 我在第二行收到错误 参数 2 不能与 ref 关键字一起传递 您只能通过引用传递参数ref if the 范围 is a ref参数也是如此 Add
  • 如何从外语线程调用Python函数(C++)

    我正在开发一个程序 使用 DirectShow 来抓取音频数据 媒体文件 DirectShow 使用线程将音频数据传递给回调 我的程序中的函数 然后我让该回调函数调用另一个函数 Python 中的函数 我使用 Boost Python 来包
  • Type.GetInterfaces() 仅适用于声明的接口

    首先 像这样的问题有很多 也许有些OP甚至在问同样的问题 问题是这些问题的答案 无论是否接受 都没有真正回答这个问题 至少我找不到 如何确定类直接声明的接口 而不是由父级或声明的接口继承的接口 e g interface I interfa
  • 如何检测应用程序正在运行的 .NET 版本?

    我尝试使用Environment Version ToString 确定目标计算机上正在使用什么 NET 框架 但安装了 4 0 版本时 它说我正在使用 NET 2 0 如何检测目标计算机上正在运行的 NET Framework 版本 En
  • 具有四个 && 的 LINQ Where 子句

    我正在尝试在Where 子句中创建一个带有4 个参数的LINQ 查询 这是一个 Windows 8 应用程序项目 我正在使用 SQLite 数据库 SQLite 实现 https github com praeclarum sqlite n
  • 如何在c#中创建多线程

    我需要监听机器中的所有串行端口 假设我的机器有 4 个串行端口 我必须创建 4 个线程并开始分别使用附加线程监听每个端口 我使用此代码来获取我的机器中的端口数量 private SerialPort comPort new SerialPo
  • 将一个 IEnumerable 拆分为多个 IEnumerable

    我是 linq 新手 我需要根据指示器将 Couple string text bool Indicator 类型的 IEnumerable 拆分为多个 IEnumerable 我尝试使用skipWhile 和 TakeWhile 但没有找

随机推荐

  • 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