首页 > P1132 数字生成游戏

P1132 数字生成游戏

题目描述

小明完成了这样一个数字生成游戏,对于一个不包含00的数字ss来说,有以下33种生成新的数的规则:

  1. 将ss的任意两位对换生成新的数字,例如143143可以生成314,413,134314,413,134;

  2. 将ss的任意一位删除生成新的数字,例如143143可以生成14,13,4314,13,43

  3. 在ss的相邻两位之间s_i,s_{i + 1}si​,si+1​之间插入一个数字x,x需要满足s_i

现在小明想知道,在这个生成法则下,从ss开始,每次生成一个数,可以用然后用新生成的数生成另外一个数,不断生成直到生成tt至少需要多少次生成操作。

另外,小明给规则33又加了一个限制,即生成数的位数不能超过初始数ss的位数。若ss是143143,那么12431243与13431343都是无法生成的;若ss为14431443,那么可以将ss删除变为143143,再生成12431243或13431343。

输入输出格式

输入格式:

第一行包含11个正整数,为初始数字ss。

第二行包含一个正整数mm,为询问个数。

接下来mm行,每行一个整数tt(tt不包含00),表示询问从ss开始不断生成数字到tt最少要进行多少次操作。任两个询问独立,即上一个询问生成过的数到下一个询问都不存在,只剩下初始数字ss。

输出格式:

共mm行,每行一个正整数,对每个询问输出最少操作数,如果无论如果无论也变换不成,则输出-1−1。

输入输出样例

输入样例#1: 复制

143

3

134

133

32

输出样例#1: 复制

1

-1

4

说明

143143 ->134134

133133无法得到

143143 -> 1313 -> 123123 ->2323->3232

对于20%20%的数据,s < 100s<100;

对于40%40%的数据,s < 1000s<1000;

对于40%40%的数据,m < 10m<10;

对于60%60%的数据,s < 10000s<10000;

对于100%100%的数据,s < 100000,m ≤ 50000s<100000,m≤50000。


爆搜

没了


#include
#include
#include
#include
#include
#define LL long longusing namespace std;
queue q;
int i,m,n,j,k,a[2000011],b[2000011],s,f[10001],sdf,cnt;int zh(int *a,int k)
{int ans=0;for(int i=k;i>=1;i--)ans=ans*10+a[i];cnt+=1;return ans;
}void bfs()
{b[s]=1;q.push(s);while(q.size()){int s=q.front(); q.pop();int k=s,l=0;while(k) l+=1,f[l]=k%10,k/=10;for(int k=s,i=1,d=10;i<=l;i++,d*=10){int t=k/d*d/10, x=k%(d/10);int y=t+x;if(!b[y]) b[y]=1, a[y]=a[s]+1, q.push(y);}if(l!=n){for(int k=s,i=1,d=10;i

转载于:https://www.cnblogs.com/ZUTTER/p/9881535.html

更多相关:

  •         Apache POI是一个开源的利用Java读写Excel,WORD等微软OLE2组件文档的项目。        我的需求是对Excel的数据进行导入或将数据以Excel的形式导出。先上简单的测试代码:package com.xing.studyTest.poi;import java.io.FileInputSt...

  • 要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; 要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; 通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。 要取得a到b之间的...

  • 利用本征图像分解(Intrinsic Image Decomposition)算法,将图像分解为shading(illumination) image 和 reflectance(albedo) image,计算图像的reflectance image。 Reflectance Image 是指在变化的光照条件下能够维持不变的图像部分...

  • 题目:面试题39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 限制: 1 <= 数组长度 <= 50000 解题: cl...

  • 题目:二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:      5     /    2   6   /  1   3示例 1: 输入: [1,6,3,2,5] 输出...

  •     打钩后→Ctrl+F9 或者 就会在项目对应的目录生成war包 反之,如果不打勾“Include in project build”,那么生成项目(Ctrl+F9)的时候就不会生成war包...

  •   地址:https://docs.microsoft.com/zh-cn/dotnet/framework/wcf/wcf-and-aspnet-web-api WCF 是 Microsoft 为生成面向服务的应用程序而提供的统一编程模型。 借助这一模型,开发人员可以构建既能跨平台与现有投资集成又能与现有投资交互的安全、可靠的事务处...

  • 工作需要,根据动态参数生成小程序二维码。 找了下开发API :https://developers.weixin.qq.com/miniprogram/dev/api/qrcode.html 选择了B接口,可以无限生成,只是参数有点限制,但是可以满足需求,开搞。   一、获取 access_token 这个就不啰嗦了,项目里配置唯一...

  •   class Solution { public:bool isValid(string s) {int start=0,end=s.size()-1;if(end==-1)//万万没想到,他把空字符串当成true了return true;int ss[end+1];//歪方法,把左括号全部<0,右括号都>0,且同类型符号绝对值...