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

news2024/11/23 7:04:36

 题目一:串变换

 代码解析:

#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++)  // 枚举糖1
        for(int j=0;j<=tan2;j++)    // 枚举糖2
              if(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.coloradmin.cn/o/1592360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenHarmony南向开发案例:【智能门锁】

一. 简介 本demo是基于Openharmony 3.1 Beta本版开发&#xff0c;不仅可以接收数字管家应用下发的指令来控制门锁开启&#xff0c;而且还可以通过数字管家设置不同的开锁密码以及一次性密码&#xff0c;实现给临时用户一个临时密码&#xff0c;保证门户安全。当然除了开锁的功…

MySQL_00001_00000

数据准备 员工表&#xff1a;emp Oracle: create table emp ( empno number(4) not null, ename varchar2(10), job varchar2(9), mgr number(4), hiredate date, sal number(7, 2), comm number(7, 2), deptno number(2) ); insert into em…

远程桌面防火墙是什么?

远程桌面防火墙&#xff0c;是一种针对远程桌面应用的安全防护工具。它可以在保证远程桌面连接的便利性和高效性的对网络连接进行安全性的保护&#xff0c;防止未经授权的访问和潜在的安全风险。 远程桌面防火墙的主要功能是对远程桌面连接进行监控和管理。它通过识别和验证连接…

基于51单片机篮球24秒倒计时设计( proteus仿真+程序+设计报告+原理图+讲解视频)

基于51单片机篮球24秒倒计时设计( proteus仿真程序设计报告原理图讲解视频&#xff09; 基于51单片机篮球24秒倒计时设计 1. 主要功能&#xff1a;2. 讲解视频&#xff1a;3. 仿真设计4. 程序代码5. 设计报告6. 原理图7. 设计资料内容清单&&下载链接下载链接 仿真图pro…

分享2024高校专业建设思路及建设效果

广东泰迪智能科技股份有限公司成立于2013年&#xff0c;是一家专业从事大数据、人工智能等数据智能技术研发、咨询和培训的高科技企业&#xff0c;公司基于十余年的数据智能产业实践经验&#xff0c;构建“产、岗、课、赛、证、文”融通的特色应用型人才培养模式&#xff0c;助…

reduce方法

console.log(movements);● 例如上述这个列表存储了一个用户每次取钱和存钱的一个过程&#xff0c;我们要将这个数组中所有的数组加起来&#xff0c;来了解他的余额到底有多少钱&#xff0c;这就需要用到reduce方法 const balance movements.reduce(function (acc, cur, i, a…

自动化测试-web

一、自动化测试理论&#xff1a; UI: User Interface &#xff08;用户接口-用户界面&#xff09;&#xff0c;主要包括&#xff1a;app 和webUI自动化测试&#xff1a;使用工具或代码执行用例的过程什么样的项目适合做自动化&#xff1a; 需要回归测试项目&#xff08;甲方自…

Docker 学习笔记(八):Dockerfile实战篇,制作 Tomcat 镜像,发布镜像到 DockerHub 和阿里云

一、前言 记录时间 [2024-4-13] 系列文章简摘&#xff1a; Docker 学习笔记&#xff08;六&#xff09;&#xff1a;挑战容器数据卷技术一文通&#xff0c;实战多个 MySQL 数据同步&#xff0c;能懂会用&#xff0c;初学必备 Docker 学习笔记&#xff08;七&#xff09;&#x…

树--构建二叉排序树

一、二叉排序树介绍 二叉排序树&#xff1a;对于二叉排序树的任何一个非叶子节点&#xff0c;要求左子节点的值比当前节点的值小&#xff0c;右子节点的值比当前节点的值大。 特别说明&#xff1a;如果有相同的值&#xff0c;可以将该节点放在左子节点或右子节点 二、构建有…

几分钟!你的PDF文件就可以具有仿真翻页的效果!

你是否曾经在阅读PDF文件时感到困扰&#xff0c;因为它的页面是静态的&#xff0c;无法模拟真实的翻页效果&#xff1f;现在&#xff0c;我教你一个很实用的方法&#xff1a;几分钟&#xff01;你的PDF文件就可以具有仿真翻页的效果&#xff01; 工具&#xff1a;FLBOOK在线制作…

深入理解JavaScript - JavaScript中call、apply、bind方法

一、call() / apply() JavaScript中的函数是对象&#xff0c;与其他JavaScript对象一样,JavaScript函数也有方法。其中有两个自带的方法 – call和apply&#xff0c;可以利用这两个方法来间接调用某个函数。 通过一个简单的例子体会一下call和apply的用法&#xff1a; funct…

windows下使用的的数字取证工作工具套装:forensictools

推荐一套windows下使用的的数字取证工作工具套装&#xff1a;forensictools 部分工具包括&#xff1a; ▫️exiftool&#xff0c;一个命令行应用程序和 Perl 库&#xff0c;用于读写元信息。 ▫️YARA&#xff0c;一款开源工具&#xff0c;用于对恶意软件样本进行识别和分类。…

LeetCode最长有效括号问题解

给定一个仅包含字符的字符串(’ 和 ‘)’&#xff0c;返回最长有效的长度(出色地-形成) 括号子弦。 示例1&#xff1a; 输入&#xff1a;s “(()” 输出&#xff1a;2 说明&#xff1a;最长的有效括号子字符串是 “()” 。 示例2&#xff1a; 输入&#xff1a;s “)()())…

设计模式——迭代器模式15

迭代器模式提供一种方法访问一个容器对象中各个元素&#xff0c;而又不需暴露该对象的内部细节。 设计模式&#xff0c;一定要敲代码理解 抽象迭代器 /*** 迭代抽象* */ public interface Iterator<A> {A next();boolean hasNext(); }迭代器实现 /*** author ggbond*…

记一次http访问超时服务器端调试

问题&#xff1a;http访问服务器时没有返回&#xff0c;没有超时&#xff0c;一直在阻塞 处理过程&#xff1a;telnet端口能连上&#xff0c;服务端程序也不存在处理时间过长的情况。 说明tcp连接没问题。推测是客户端连接后再发起请求&#xff0c;服务端阻塞了。因为很多客户…

【C++程序员的自我修炼】拷贝构造函数

心存希冀 追光而遇目有繁星 沐光而行 目录 拷贝构造函数概念 拷贝构造的特征 无穷递归的解释 浅拷贝 总结&#xff1a; 深拷贝 拷贝构造函数典型调用场景 总结 契子✨ 在生活中总有很多琐事&#xff0c;不做不行做了又怕麻烦&#xff0c;有时候想要是有个和自己一模一样的人就…

功能测试_订购单检查_判定表

画判定表的步骤&#xff1a; 列出条件 列出动作

[大模型]Yi-6B-chat WebDemo 部署

Yi-6B-chat WebDemo 部署 Yi 介绍 由60亿个参数组成的高级语言模型 Yi LLM。为了促进研究&#xff0c;Yi 已经为研究社区开放了Yi LLM 6B/34B Base 和 Yi LLM 6B/34B Chat。 环境准备 在autodl平台中租一个3090等24G显存的显卡机器&#xff0c;如下图所示镜像选择PyTorch–…

【Linux】磁盘与文件系统管理

目录 一、 磁盘结构 1. 数据结构 2. 物理结构 3. 硬盘的接口类型 二、 如何使用Linux中的磁盘 三、 文件系统 四、 磁盘分区 1. MBR分区 2. 分区的优缺点 3. 磁盘及分区的管理工具 五、格式化与挂载 1. 格式化 2. 挂载 六、实例演示 1. 演示分区格式化挂载 2. …

Springboot+Vue项目-基于Java+MySQL的旅游网站系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…