1361:产生数(Produce)

news2024/11/18 6:38:59

【解题思路】
1、将数字拆分保存在数组中,而后转换每一位。
2、将数字变化规则保存在x、y两个一维数组中,x[i]到y[i]是一种转换规则。
3、从n的初始值开始搜索,对n做数字拆分,将拆分后的各位数字保存在一个数组中。针对数组中的每位数字,看能否通过转换规则将该数字转换为另一个数字。如果可以,那么做一次转换,将该数组通过数字组合变为一个整数,通过vis数组判断该整数是否出现过。如果出现过,那么略过。如果没出现过,将该整数在vis数组中设为“出现过”,产生的数字个数加1,而后从该整数开始再次进行搜索。

输入样例分析
234
2
2 5
3 6

【参考代码】

广搜

#include<bits/stdc++.h>
using namespace std;
#define K 20
int n, k, ct, x[K], y[K], arr[5], ai;
bool vis[10001];
void toArr(int num)//将整数num进行数字拆分,结果保存在数字数组arr中。(包括num为0的情况) 
{
    ai = 0;
    int a = num;
    do
    {
        arr[++ai] = a % 10;
        a /= 10;
    }while(a > 0);    
}
int toNum()//将数字数组arr保存的数字转为整型数字 
{
    int num = 0;
    for(int i = ai; i >= 1; --i)
        num = num * 10 + arr[i];
    return num;
}
void bfs()
{
	queue<int> que;
	vis[n] = true;
	ct = 1;
	que.push(n);
	while(que.empty() == false)
	{
		int u = que.front();
		que.pop();
		toArr(u);//将u转为数字数组arr 
		for(int i = 1; i <= ai; ++i)//遍历arr中的每一位 
		{
			for(int j = 1; j <= k; ++j)//遍历每条规则 
			{
				if(arr[i] == x[j])
				{
					arr[i] = y[j];
					int newNum = toNum();
					if(vis[newNum] == false)
					{
						vis[newNum] = true;
						ct++;
						que.push(newNum);
					}
					arr[i] = x[j];//还原 
				}
			}
		}
	}
}
int main()
{
	cin >> n >> k;
	for(int i = 1; i <= k; ++i)
		cin >> x[i] >> y[i];
	bfs();
	cout << ct;
	return 0;
}

深搜

#include <bits/stdc++.h>
using namespace std;
int n, k, x[20], y[20], arr[5], ai, ct;
bool vis[10000];
void toArr(int num)//将整数num进行数字拆分,结果保存在数字数组arr中。(包括num为0的情况) 
{
	ai = 0;
    int a = num;
    do
    {
        arr[++ai] = a % 10;
        a /= 10;
    }while(a > 0);    
}
int toNum()//将数字数组arr保存的数字转为整型数字 
{
    int num = 0;
    for(int i = ai; i >= 1; --i)
        num = num * 10 + arr[i];
    return num;
}
void dfs(int num)
{
    int temp, newNum;
    for(int i = 1; i <= ai; ++i)
    {
        for(int j = 1; j <= k; ++j)//如果存在替换arr[i]的规则 
        {
            if(arr[i] == x[j])
            {
                arr[i] = y[j];
                newNum = toNum();//合成得到新的整数 
                if(vis[newNum] == false)//如果新的整数nweNum没出现过 
                {
                    vis[newNum] = true;//将newNum标记为出现过 
                    ct++;//数字出现的个数加1 
                    dfs(newNum);
                }
                arr[i] = x[j];//还原 
            }
        }
    }
}
int main()
{
    cin >> n >> k;
    for(int i = 1; i <= k; ++i)
        cin >> x[i] >> y[i];
    toArr(n);
    vis[n] = true;
    ct = 1;
    dfs(n);
    cout << ct;
    return 0;
}

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

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

相关文章

使用timm库的一些知识点

timm&#xff08;Torch Image Models&#xff09;是一个在PyTorch上构建的图像模型库&#xff0c;它提供了一系列预训练的深度学习模型&#xff0c;使得研究人员和开发者可以方便地进行图像分类、目标检测等任务。 使用timm库创建模型时&#xff0c;如何确定模型的名字 使用…

3-14八股文学习

八股学习是看别人面试被问到的问题&#xff0c;然后把它发给GPT&#xff0c;让gpt讲一讲&#xff0c;自己再理解一下&#xff0c;真的很想拿offer&#xff0c;想去暑期实习啊啊啊啊啊 你用过什么 SpringBoot 里的什么注解&#xff1f;Spring Boot 中有很多常用的注解&#xff…

Ele admin pro和iView Admin pro的用户管理页面对比

Ele admin pro和iView Admin pro都是非常优秀的B端框架&#xff0c;功能大同小异&#xff0c;本文就着重比对一下二者的用户案例页面&#xff0c;让老铁们感知一些细节。 一、用户列表 用户列表 用户列表 二、用户编辑 三、用户添加 四、角色管理 五、权限分配 六、角色添加

Web前端开发学习路线图

Web前端开发学习路线图可以为你提供一个明确的学习路径&#xff0c;帮助你逐步掌握Web前端开发的各项技能。以下是一个基本的学习路线图&#xff0c;你可以根据自己的实际情况进行调整和补充。 一、基础阶段 HTML&#xff1a;学习HTML的基本语法&#xff0c;了解HTML文档的结构…

【Linux网络】应用层协议——http协议

目录 HTTP协议 认识URL urlencode和urldecode HTTP协议格式 HTTP请求协议格式 获取浏览器的HTTP请求 HTTP响应协议格式 构建HTTP响应给浏览器 构建处理HTTP请求类及代码完善 HTTP的方法 GET方法和POST方法 HTTP的状态码 HTTP常见Header Cookie&Session HTT…

c++ 常用函数 集锦 整理中

c 常用函数集锦 目录 1、string和wstring之间转换 1、string和wstring之间转换 std::string convertWStringToString(std::wstring wstr) {std::string str;if (!wstr.empty()){std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;str converter.to_b…

java 数据结构 优先级队列(PriorityQueue)

目录 优先级队列 堆的概念 堆的性质 堆的存储方式 堆的创建 堆的插入 堆的删除 用堆模拟实现优先级队列 PriorityQueue的特性 PriorityQueue常用接口介绍 堆排序 优先级队列 前面介绍过队列&#xff0c;队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下…

【BUG 弹药库】Tortoise git 绿色的勾 ✔ 和 红色的 !突然不见了该如何解决呢?

文章目录 1. 出现的问题描述如下所示&#xff1a;2. 如何解决这个问题呢 &#xff1f; 1. 出现的问题描述如下所示&#xff1a; 用 TortoiseGit 提交代码的时候&#xff0c;红色的 ! 和 绿色的 ✔ 突然消失了&#xff1b; 2. 如何解决这个问题呢 &#xff1f; ① 首先按住快…

新版Android Studio火烈鸟 在新建项目工程时 无法选java的语言模板解决方法

前言 最近下载最新版androidstudio时 发现不能勾选java语言模板了 如果快速点击下一步 新建项目 默认是kotlin语言模板 这可能和google主推kt语言有关 勾选1 如图所示 如果勾选 No Activity 这个模板 是可以选java语言模板的 但是里面没有默认的Activity 勾选2 和以前的用法…

SL6015B 耐压60V高调光比LED驱动IC 支持1.5A 输出30W功率

SL6015B是一款耐压60V、高调光比LED驱动IC&#xff0c;支持1.5A输出电流&#xff0c;最大输出功率达到30W。这款驱动IC专为LED照明应用而设计&#xff0c;具有出色的性能表现和广泛的应用前景。 首先&#xff0c;SL6015B的高耐压能力使其能够适用于各种高电压的LED照明场合。无…

如何免费获取基于公网 IP 的 SSL 证书 (无需域名)

现在给网站安装SSL证书来实现网站的HTTPS安全访问已经成了大多数人的共识&#xff0c;但是有一些特殊情况&#xff1a;比如对于个别的应用IP地址不需要绑定域名&#xff0c;只是单纯用IP来访问网站&#xff0c;这种情况下&#xff0c;可以实现HTTPS访问吗&#xff1f; 先说答案…

python基础——列表【创建,下标索引,常见操作方法】

&#x1f4dd;前言&#xff1a; 这篇文章主要讲解一下python中常见的数据容器之一——列表 本文主要讲解列表的创建以及我们常用的列表操作方法 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;C语言入门基础以及python入门基础 &#x1f380…

第十四届蓝桥杯省赛真题 Java 研究生 组【原卷】

文章目录 发现宝藏【考生须知】试题 A: 特殊日期试题 B: 与或异或试题 C: 棋盘试题 D: 子矩阵试题 E : \mathrm{E}: E: 互质数的个数试题 F: 小蓝的旅行计划试题 G: 奇怪的数试题 H: 太阳试题 I: 高塔试题 J \mathrm{J} J : 反异或 01 串 发现宝藏 前些天发现了一个巨牛的人…

【UE5】非持枪状态蹲姿移动的动画混合空间

项目资源文末百度网盘自取 在BlendSpace文件夹中单击右键选择动画(Animation)中的混合空间(Blend Space) &#xff0c;选择SK_Female_Skeleton&#xff0c;命名为BS_NormalCrouch 打开BS_NormalCrouch 水平轴表示角色的方向&#xff0c;命名为Direction&#xff0c;方向的最…

Java毕业设计-基于springboot开发的“智慧食堂”设计与实现-毕业论文+答辩PPT(附源代码+演示视频)

文章目录 前言一、毕设成果演示&#xff08;源代码在文末&#xff09;二、毕设摘要展示1.开发说明2.需求分析3、系统功能结构 三、系统实现展示1、系统登录2、系统功能模块3、管理员功能模块 四、毕设内容和源代码获取总结 Java毕业设计-基于springboot开发的“智慧食堂”设计与…

AI预测福彩3D第8弹【2024年3月13日预测--新算法重新开始计算第四次测试】

今天&#xff0c;先告诉大家一个好消息&#xff0c;经过修正后的算法&#xff0c;经过昨天第3次预测&#xff0c;成功命中了7码。 昨天的开奖结果是 3 7 7&#xff0c;我的预测结果均是前7码命中&#xff0c;当然&#xff0c;前6码也命中了。如果再配合缩水软件的话&#xff0c…

基于Python的中医药知识问答系统设计与实现

[简介] 这篇文章主要介绍了基于Python的中医药知识问答系统的设计与实现。该系统利用Python编程语言&#xff0c;结合中医药领域的知识和技术&#xff0c;实现了一个功能强大的问答系统。文章首先介绍了中医药知识的特点和传统问答系统的局限性&#xff0c;然后提出了设计思路…

手把手教你使用Python第三方模块

1.第三方模块 一般是别人解决特定问题的功能进行了封装&#xff0c;可以通过安装直接使用 注意 第三方模块需要先安装&#xff0c;才能使用 常见的安装方式&#xff1a;通过pip工具或者通过pycharm编辑器进行安装 2.pip指令安装 pip -V # 查看pip的版本 pip 23.2.1 fr…

深度解析:cache的基本概念原理扫盲

引流关键词:缓存,高速缓存,cache, CCI,CMN,CCI-550,CCI-500,DSU,SCU,L1,L2,L3,system cache, Non-cacheable,Cacheable, non-shareable,inner-shareable,outer-shareable, optee、ATF、TF-A、Trustzone、optee3.14、MMU、VMSA、cache、TLB、arm、armv8、armv9、TEE、安全、内存…

Palworld幻兽帕鲁管理员操作手册

Palworld幻兽帕鲁管理员操作手册 大家好我是艾西&#xff0c;在我们搭建完幻兽帕鲁服务器后肯定会涉及到后期的维护比如&#xff1a;角色修改&#xff0c;帕鲁修改&#xff0c;异常删除&#xff0c;公会修改&#xff0c;清理玩家&#xff0c;清理建筑&#xff0c;存档迁移等数…