C++深度搜索(2)

取数游戏

题目描述: 一个 N×M 的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意 两个数字不相邻(若一个数字在另外一个数字相邻 8个格子中的一个即认为这两个数字相 邻),求取出数字和最大是多少。

输入

第一行有两个正整数 N 和 M ,表示了数字矩阵为 N行 M 列。( 1≤N,M≤6)

输出

输出一个整数,代表符合题目要求的最大的数字和。(样例确保数字和在int范围内)

输入复制

3 3

2 8 9

4 6 4

9 10 7

输出复制

27

#include<bits/stdc++.h>
using namespace std;
void func(int,int,int);
int a[10][10]={0};
bool b[10][10]={0};
int n,m;
int ma=-1;
int main()
{cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];}}func(1,1,0);cout<<ma;return 0;
}
void func(int x,int y,int sum)
{if(x==n&&y==m){ma=max(ma,sum);return;}int tx=x,ty=y;y++;if(y>m){x++;y=1;}if(b[x][y]==0){b[x][y]=1;b[x+1][y]=1;b[x-1][y]=1;b[x][y+1]=1;b[x][y-1]=1;b[x-1][y-1]=1;b[x-1][y+1]=1;b[x+1][y-1]=1;b[x+1][y+1]=1;func(x,y,sum+a[tx][ty]);b[x][y]=0;b[x+1][y]=0;b[x-1][y]=0;b[x][y+1]=0;b[x][y-1]=0;b[x-1][y-1]=0;b[x-1][y+1]=0;b[x+1][y-1]=0;b[x+1][y+1]=0;}func(x,y,sum);
}

走出迷宫的最少步数2

题目描述 :当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫 地图,事情就会变得非常简单。假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点 到出口的最短路。

输入

第一行是两个整数n和m(1<=nm<=100)表示迷宫的行数和列数。接下来n行,每行一个长为m的字符串,表示整 个迷宫的布局。字符'.'表示空地,'#'表示墙,'S'表示起点 'T'表示出口。

输出

输出从起点到出口最少需要走的步数

输入复制

3 3

S#T

.#.

...

输出复制

6

#include<bits/stdc++.h>
using namespace std;
void func(int,int,int);
int n,m;
char a[110][110];
bool b[110][110]={0};
int sx,sy;
int tx,ty;
int mi=9999999;
int main()
{cin>>n>>m;for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>a[i][j];if(a[i][j]=='S'){sx=i;sy=j;}if(a[i][j]=='T'){tx=i;ty=j;}}}func(sx,sy,0);cout<<mi;return 0;
}
void func(int x,int y,int cnt)
{if(x==tx&&y==ty){mi=min(mi,cnt);return;}if(x+1<n&&a[x+1][y]!='#'&&b[x+1][y]==0){b[x+1][y]=1;func(x+1,y,cnt+1);b[x+1][y]=0;}if(x-1>=0&&a[x-1][y]!='#'&&b[x-1][y]==0){b[x-1][y]=1;func(x-1,y,cnt+1);b[x-1][y]=0;}if(y+1<m&&a[x][y+1]!='#'&&b[x][y+1]==0){b[x][y+1]=1;func(x,y+1,cnt+1);b[x][y+1]=0;}if(y-1>=0&&a[x][y-1]!='#'&&b[x][y-1]==0){b[x][y-1]=1;func(x,y-1,cnt+1);b[x][y-1]=0;}
}

小明学游泳

题目描述:小明想要学游泳。 这天,小明来到了游泳池,发现游泳池可以用N行M列的格子来表示,每个格子的面积都是1,且格子内水深相同。 由于小明刚刚入门,他只能在水深相同的地方游泳。为此,他把整个游泳池看成若干片区域,如果两个格子相邻 (上下左右四个方向)且水深相同,他就认为它们属于同一片区域。 小X想知道最大的一片区域面积是多少,希望你帮帮他。

 输入

第一行包含用一个空格隔开的两个整数N,M。(1≤N,M≤100) 接下来N行,每行包含M个 1到9的数字,表示每个格子的水深

输出

第一行包含一个整数,表示最大的一片区域面积。

样例

输入复制

3 3

1 2 4

2 2 4

1 5 2

输出复制

3

#include<bits/stdc++.h>
using namespace std;
void func(int,int,int);
int a[110][110]={0};
bool b[110][110]={0};
int n,m;
int ma=-1;
int main()
{cin>>n>>m;for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>a[i][j];}}for(int i=0;i<n;i++){for(int j=0;j<m;j++){func(i,j,1);}}cout<<ma;return 0;
}
void func(int x,int y,int cnt)
{b[x][y]=1;if(x+1<n&&a[x+1][y]==a[x][y]&&b[x+1][y]==0){func(x+1,y,cnt+1);}if(x-1<n&&a[x-1][y]==a[x][y]&&b[x-1][y]==0){func(x-1,y,cnt+1);}if(y+1<n&&a[x][y+1]==a[x][y]&&b[x][y+1]==0){func(x,y+1,cnt+1);}if(y-1<n&&a[x][y-1]==a[x][y]&&b[x][y-1]==0){func(x,y-1,cnt+1);}ma=max(ma,cnt);
}

小明学游泳2

题目描述:暑假快到啦,小明准备趁着这个暑假去学游泳。可是一开始小 X 就遇到了一个难题。 游泳池划分成了一个 n×m 的方格, 这里 n×m 表示 n 行 m 列。 因 为游泳池里的水深浅不一,所以这 n×m 个方格对 于小明的危险系数也会不一样。 而小 X 目前需要从左上角 的方格(1, 1)出发, 游到右下角 的方格(n, m),小明每次只 能从当前方格游到上下 左右四个相邻的方格中的某一格,并且在到达终点前不能离开游泳池。 小 X 很担心会发生什么危险,所以希望你能帮他找一条危险系数最小的路径。 一条路径的危险系数定义为这条路径所经过的方格的危险系数之和。 注意:这条路径不能经过同一个方格两次(小 X 当然不希望去那么危险的地方再游一次)

输入

输入数据第一行有两个用空格隔开的正整数 n 和 m, 表示泳池的行数和列数。 接下来共有 n 行数据,每行有 m 个用空格隔开的大于等于 0 的整数, 表示每个方格 的危险系数

输出

输出仅有一行包含一个整数ans, 表示要求的从左上角的方格( 1, 1)出发, 游到 右下角的方格(n, m) 的最小的危险系数。

输入复制

4 5

1 7 2 8 2

3 10 1 5 1

2 8 3 7 1

1 2 1 20 1

输出复制

19

#include<bits/stdc++.h>
using namespace std;
void func(int,int,int);
int a[110][110]={0};
bool b[110][110]={0};
int n,m;
int mi=999999;
int main()
{cin>>n>>m;for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>a[i][j];}}func(0,0,0);cout<<mi;return 0;
}
void func(int x,int y,int sum)
{b[x][y]=1;if(x==n-1&&y==m-1){sum=sum+a[x][y];mi=min(mi,sum);b[x][y]=0;return;}if(x+1<=n-1&&b[x+1][y]==0){func(x+1,y,sum+a[x][y]);}if(x-1>=0&&b[x-1][y]==0){func(x-1,y,sum+a[x][y]);}if(y+1<=m-1&&b[x][y+1]==0){func(x,y+1,sum+a[x][y]);}if(y-1>=0&&b[x][y-1]==0){func(x,y-1,sum+a[x][y]);}b[x][y]=0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/473445.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

django解决跨域问题

django解决跨域问题 第一步 查看自己的 django 依赖里面有没有 django-cors-headers 包 直接 cmd pin list第二步如果没有 在自己的 pycharm 里面安装 django-cors-headers 包 pip install django-cors-headers第三步检查是否安装成功 查看自己的 django-cors-headers 安…

【51单片机】LCD1602液晶显示屏

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 LCD1602存储结构时序结构 编码 —— 显示字符、数字 LCD1602 LCD1602&#xff08;Liquid Crystal Display&#xff09;液晶显示屏是…

【C++派生类新增对象的初始化顺序】单继承下派生类新增成员对象的初始化顺序

单继承下派生类新增成员对象的初始化顺序 &#xff08;1&#xff09;【意识】派生类新增成员对象也要初始化&#xff0c;千万别忘&#xff01; &#xff08;2&#xff09;派生类构造函数执行顺序 ①调用基类构造函数 ②对派生类的新增成员对象初始化[调用顺序为类中声明顺序] ③…

红外遥控信号解码

红外遥控信号解码 之前就已经做过红外遥控的解码了&#xff0c;但是一直没有做记录&#xff0c;最近的项目又使用到了红外遥控&#xff0c;索性就把他捡起来记录一下&#xff0c;对于信号的解码&#xff0c;我一般的习惯都是先用逻辑分析仪抓取一下信号波形&#xff0c;然后对…

基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络

一、介绍 垃圾识别分类系统。本系统采用Python作为主要编程语言&#xff0c;通过收集了5种常见的垃圾数据集&#xff08;‘塑料’, ‘玻璃’, ‘纸张’, ‘纸板’, ‘金属’&#xff09;&#xff0c;然后基于TensorFlow搭建卷积神经网络算法模型&#xff0c;通过对图像数据集进…

stdin文件流指针

stdin文件流指针&#xff08;FILE *&#xff09;&#xff0c;用于表示标准输入流。它通常与键盘进行交互&#xff0c;也可以通过重定向将其他输入源作为标准输入。

GPU分布式通信技术-PCle、NVLink、NVSwitch深度解析

GPU分布式通信技术-PCle、NVLink、NVSwitch 大模型时代已到来&#xff0c;成为AI核心驱动力。然而&#xff0c;训练大模型却面临巨大挑战&#xff1a;庞大的GPU资源需求和漫长的学习过程。 要实现跨多个 GPU 的模型训练&#xff0c;需要使用分布式通信和 NVLink。此外&#xf…

调用门提权

在我写的2.保护模式&#xff0b;段探测这篇文章中&#xff0c;我们提到了S位对于段描述符的控制&#xff0c;之前我们已经介绍了代码段和数据段&#xff0c;现在我们来把目光转到系统段 在这么多中结构里面&#xff0c;我们今天要介绍的就是编号为12的&#xff0c;32位调用门 结…

文心一言编写小球反弹程序并优化

使用文心一言尝试编写一个小游戏&#xff0c;先完成 1.python中用pygame模块设计出一个显示区域720x540的屏幕&#xff0c;并绘制一个小球&#xff0c;可以完成小球在显示区域内自动随机直线移动&#xff0c;碰到显示区域的便捷并反弹 import pygame import random import sy…

华为开源自研AI框架昇思MindSpore应用案例:人体关键点检测模型Lite-HRNet

如果你对MindSpore感兴趣&#xff0c;可以关注昇思MindSpore社区 一、环境准备 1.进入ModelArts官网 云平台帮助用户快速创建和部署模型&#xff0c;管理全周期AI工作流&#xff0c;选择下面的云平台以开始使用昇思MindSpore&#xff0c;获取安装命令&#xff0c;安装MindSpo…

gitlab和jenkins连接

一&#xff1a;jenkins 配置 安装gitlab插件 生成密钥 id_rsa 要上传到jenkins&#xff0c;id_rsa.pub要上传到gitlab cat /root/.ssh/id_rsa 复制查看的内容 可以看到已经成功创建出来了对于gitlab的认证凭据 二&#xff1a;配置gitlab cat /root/.ssh/id_rsa.pub 复制查…

SpringBoot实现WebSocket

参考链接&#xff1a;https://www.kancloud.cn/king_om/mic_03/2783864 一、环境搭建 1.创建SpringBoot项目&#xff0c;引入相关依赖 <dependencies><!-- Spring Boot核心启动器&#xff0c;引入常用依赖基础 --><dependency><groupId>org.springf…

现代密码学|公钥密码体制 | RSA加密算法及其数学基础

文章目录 公钥密码RSA数学基础欧拉函数欧拉定理模指数运算 RSA加密算法对rsa的攻击 公钥密码 现代密码学&#xff5c;公钥密码体制概述 加密 A用B的公钥加密 B用B的私钥解密 认证 A使用A的私钥加密 B使用A的公钥解密 加密认证 A用A的私钥加密&#xff0c;再用B的公钥加密 B用…

VuePress v2 快速搭建属于自己的个人博客网站

目录 为什么用VuePress&#xff1f; 一、前期准备 Node.js 使用主题快速开发 二、VuePress安装 三、个性化定制 修改配置信息 删除不需要的信息 博客上传 四、部署 使用github快速部署 初始化仓库 本地配置 配置github的ssh密钥 部署 为什么用VuePress&#xff…

【阅读记录-章节1】Build a Large Language Model (From Scratch)

目录 1. Understanding large language models1.1 What is an LLM?补充介绍人工智能、机器学习和深度学习的关系机器学习 vs 深度学习传统机器学习 vs 深度学习&#xff08;以垃圾邮件分类为例&#xff09; 1.2 Applications of LLMs1.3 Stages of building and using LLMs1.4…

平台整合是网络安全成功的关键

如今&#xff0c;组织面临着日益复杂、动态的网络威胁环境&#xff0c;随着恶意行为者采用越来越阴险的技术来破坏环境&#xff0c;攻击的数量和有效性也在不断上升。我们最近的 Cyber​​Ark 身份威胁形势报告&#xff08;2024 年 5 月&#xff09;发现&#xff0c;去年 99% 的…

PlantUML——时序图

PlantUML时序图 背景 时序图&#xff08;Sequence Diagram&#xff09;&#xff0c;又名序列图、循序图&#xff0c;是一种UML交互图&#xff0c;用于描述对象之间发送消息的时间顺序&#xff0c;显示多个对象之间的动态协作。时序图的使用场景非常广泛&#xff0c;几乎各行各…

【MYSQL】分库分表

一、什么是分库分表 分库分表就是指在一个数据库在存储数据过大&#xff0c;或者一个表存储数据过多的情况下&#xff0c;为了提高数据存储的可持续性&#xff0c;查询数据的性能而进行的将单一库或者表分成多个库&#xff0c;表使用。 二、为什么要分库分表 分库分表其实是两…

Spring纯注解开发

在我的另一篇文章中&#xff08;初识Spring-CSDN博客&#xff09;&#xff0c;讲述了Bean&#xff0c;以及通过xml方式定义Bean。接下来将讲解通过注解的方法管理Bean。 我们在创建具体的类的时候&#xff0c;可以直接在类的上面标明“注解”&#xff0c;以此来声明类。 1. 常…

git push时报错! [rejected] master -> master (fetch first)error: ...

错误描述&#xff1a;在我向远程仓库push代码时&#xff0c;即执行 git push origin master命令时发生的错误。直接上错误截图。 错误截图 错误原因&#xff1a; 在网上查了许多资料&#xff0c;是因为Git仓库中已经有一部分代码&#xff0c;它不允许你直接把你的代码覆盖上去…