蓝桥杯DFS自练三题-串变换,玩具蛇,分糖果

 题目一:串变换

 代码解析:

#include <iostream>
using namespace std;
struct Option{int select;int x;int y;
};
string S,T;
int N,K;//N是串的长度,K是操作指令的大小
Option opt[10];//存储所有的指令
bool vis[10];//标记数组,重要;
bool flag;//标记是否找到最终答案void dfs(string s,int start)//以start为起点开始进行dfs
{if(flag)return;//如果找到了最终答案,直接退出vis[start]=true;//进行标记int x=opt[start].x;int y=opt[start].y;if(opt[start].select==1)//注意此处要将字符转为数字再转回字符 {int tmp=(int)(s[x]-'0');tmp=(tmp+y)%10;s[x]=(char)(tmp+'0');}    else {swap(s[x],s[y]);} if(s==T)//S已经变成T,标志位置1并返回 {flag=1;return;}for(int i=1;i<=K;i++)//开始递归 {string ss; if(i==start)continue; if(vis[i]==0)//该结点之前未访问 {ss=s;//将s串复制一份 dfs(ss,i);vis[i]=false;//退出递归后将第i个结点的标志位置回0 }}}
int main()
{string temp_S;cin>>N;cin>>S>>T;temp_S=S;//temp_S用于将S串复制一份用于传参 cin>>K;for(int i=1;i<=K;i++){cin>>opt[i].select>>opt[i].x>>opt[i].y;} for(int i=1;i<=K;i++)//把每个结点分别作为起点,进行K次dfs {vis[10]={0};temp_S=S;dfs(temp_S,i);if(flag){cout<<"Yes"<<endl;break;}}if(flag==0)cout<<"No"<<endl;return 0;
}

题目二:玩具蛇 

#include "iostream"
using namespace std;int dx[4]={1,0,-1,0};	//方向控制类型 
int dy[4]={0,1,0,-1};
int a[4][4]={0};
int n=0;void dfs(int stay,int x,int y)	//x,y相当于正在放置的格子的坐标 
{	int tx,ty;if(stay==16)	//递归终止条件 {n++;return;}for(int i=0;i<4;i++)	//尝试向四个方向放置 {tx=x+dx[i];			//方向 ty=y+dy[i];if(a[tx][ty]==1||tx<0||tx>3||ty<0||ty>3)		//该格子不可放置 或越界 跳过该方向 continue;a[tx][ty]=1;	// 对已放置的格子进行标记 dfs(stay+1,tx,ty);a[tx][ty]=0;	//清除标记 }
}int main()
{void dfs(int stay,int x,int y);int stay=0;	//玩具蛇共16节 已放置了stay节 int i,k;for(i=0;i<4;i++)	//对4x4的格子 枚举玩具蛇第一个步放置的所有可能。 {for(k=0;k<4;k++)		{a[i][k]=1;	//对已放置的格子进行标记 dfs(1,i,k);a[i][k]=0;	//清除标记 }}cout<<n;return 0;
}

分糖果 

 

 代码及其解析

#include <iostream>
using namespace std;int res = 0;
void dfs(int k,int tan1,int tan2)// 第i人选,糖果1,2数量
{if(k>=7){ // 枚举完了,看糖果数if(!tan1 && !tan2)res++;return ;}for(int i=0;i<=tan1;i++)  // 枚举糖1for(int j=0;j<=tan2;j++)    // 枚举糖2if(i+j>=2 && i+j<=5) dfs(k+1,tan1-i,tan2-j);return ;
}int main()
{dfs(0,9,16);cout<<res;return 0;
}

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

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

相关文章

端口敲击守护程序之DC-9

总结 getwebshell : 发现SQL注入 → 登录系统 → 疑似文件包含 → FUZZ参数 → 文件包含读取守护程序 → 敲击打开SSH端口 → 利用泄露账号密码登录 提 权 思 路 : 发现3个用户 → 登录获取密码字典 → 再次爆破获取第4个用户 → sudo文件发现 → 存在root权限写入功能 → pa…

具有温度系数(Temperature)的Softmax函数

Softmax 函数 softmax 函数是一种激活函数&#xff0c;通常用作神经网络最后一层的输出函数。该函数是两个以上变量的逻辑函数的推广。 Softmax 将实数向量作为输入&#xff0c;并将其归一化为概率分布。 softmax函数的输出是与输入具有相同维度的向量&#xff0c;每个元素的…

安卓java打包uniapp原生插件 和 uniapp使用安卓android原生插件

1.uniapp dcloud官方文档 简介 | uni小程序SDK 2.前提&#xff0c;需要有经验的安卓java开发人员&#xff0c;并且同时具备uniapp移动端开发经验。说明&#xff1a;android打包的.aar和uniapp需要的.aar是不一样的&#xff0c;uniapp需要的.aar是需要有一些特定配置的&#x…

实践笔记-linux内核版本升级(centos7)

linux内核版本升级 1.查看当前内核版本信息2.采用yum方式进行版本升级2.1导入仓库源2.2选择 ML 或 LT 版本安装2.3设置内核启动 3.删除旧版本内核 1.查看当前内核版本信息 #查看操作系统版本 cat /etc/redhat-release #查看系统内核 uname -r2.采用yum方式进行版本升级 2.1导…

只需三步,本地打造自己的AI个人专属知识库

一、引言 本文会手把手教你如何部署本地大模型以及搭建个人知识库&#xff0c;使用到的工具和软件有 OllamaOpen WebUIDockerAnythingLLM 本文主要分享三点 如何用Ollama在本地运行大模型使用现代Web UI和本地大模型"聊天"如何打造完全本地化的知识库&#xff1a…

【MacBook系统homebrew镜像记录】

安装 使用Homebrew 国内源安装脚本,贼方便&#xff1a; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"切换至清华大学镜像源&#xff1a; 命令合并&#xff1a; 分别切换了 brew.git、 homebrew-core.git、 homebrew-…

磁盘类型与IOPS性能指标

目录 1.磁盘的访问模式 2.磁盘分类 2.1 HDD机械磁盘 2.1.1 机械磁盘性能 2.1.2 IOPS 2.1.3 提升IOPS性能手段 2.1.4 RAID技术 RAID 0 RAID 1 RAID 5 RAID 6 RAID 10 RAID 50 RAID总结 2.2 SSD固态硬盘 2.2.1 查看磁盘调度算法 2.2.2 修改磁盘调度算法 2.2.3 …

【随笔】Git 高级篇 -- 提交的技巧(下) cherry-pick commit --amend(十九)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

【架构七】Hadoop

什么是Hadoop? Hadoop是一个存储系统计算框架的软件大数据处理框架。 Hadoop的核心&#xff0c;说白了就是HDFS和MapReduce&#xff0c;HDFS为海量数据提供了存储&#xff0c;而MapReduce为海量数据提供了计算框架。HBase是一个分布式的、面向列的开源数据库。属于Nosql。 …

day11 java不同对象的关联与内存分析 JavaBean用途及讲解 import导入包

不同对象的关联与内存分析 内存图&#xff1a; 对象的属性是另一个对象时&#xff0c;在堆内存内该属性对应的值是另一个对象的首地址&#xff08;指向另一个堆内存内另一个对象&#xff09;&#xff0c;两对象建立了联系&#xff0c;可以根据箭头间接调用。 JavaBean…

linux基础篇:Linux中磁盘的管理(分区、格式化、挂载)

Linux中磁盘的管理&#xff08;分区、格式化、挂载&#xff09; 一、认识磁盘 1.1 什么是磁盘 磁盘是一种计算机的外部存储器设备&#xff0c;由一个或多个覆盖有磁性材料的铝制或玻璃制的碟片组成&#xff0c;用来存储用户的信息&#xff0c;这种信息可以反复地被读取和改写…

蚁剑修改特征性信息

前言 我们首先得知道蚁剑的流量特征&#xff1a; 编码器和解码器的特征&#xff1a;蚁剑自带的编码器和解码器具有明显的特点&#xff0c;可以通过更改配置文件来达到流量加密的目的1。例如&#xff0c;蚁剑支持多种编码方式&#xff0c;如base64、chr、rot13等&#xff0c;这…