首页 > 分享 > 魔法鲜花c++

魔法鲜花c++

最新推荐文章于 2024-08-21 22:18:43 发布

ciciio橙子 于 2022-05-15 10:02:41 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

问题 A: 魔法鲜花

 

时间限制: 1.000 Sec  内存限制: 128 MB
提交: 107  解决: 78
[命题人:][下载数据: ?]

题目描述

   小李手上有一束魔法鲜花,他想将这些花送给小媛,但是小媛只想要特定数量的花。好在这些魔法鲜花可以在小李的控制下变化数量,这样小李就可以刚好变出足够数量的鲜花,来送给小媛了。但是笨手笨脚的小李想要尽快变出刚好数量的鲜花,现在小李找到了你,想要你告诉他最快的变化方法。

已知小李的魔法鲜花的手柄上,有3个按钮。可以对鲜花的数量做出如下改变:

(1)按A按钮:鲜花数量+1

(2)按B按钮:鲜花数量-10(手里鲜花数量足够的情况下)

(3)按C按钮:鲜花数量*2

小李的魔法鲜花只能变出1到100000的朵鲜花。

输入

一行两个整数a,b表示小明手中的初始鲜花数量与目标鲜花数量。(1<=a,b<=1e5)

输出

第一行:一个整数,表示小明得到目标鲜花数量所需要的步数。

第一行:一个字符串表示按钮的操作序列,若方法不止一种,则输出步数最小,且操作序列字典序最小的那个。

样例

提示

 这题其实和抓住那头牛差不多,就是还要输出操作序列。

代码

#include <bits/stdc++.h>

using namespace std;

struct node {

int x,step;

string czxl;

};

queue <node> Q;

int newwz[4],newstep;

string newczxl[4];

bool vis[200001];

int s,t;

int main() {

cin>>s>>t;

if(s==t) { cout<<0<<endl; return 0;}

Q.push({s,0,""}); vis[s]=1;

while(!Q.empty()) {

int tx=Q.front().x;

int tstep=Q.front().step;

string tczxl=Q.front().czxl;

Q.pop();

newstep=tstep+1;

newwz[1]=tx+1; newczxl[1]=tczxl+"A";newwz[2]=tx-10;newczxl[2]=tczxl+"B";newwz[3]=2*tx; newczxl[3]=tczxl+"C";

for(int i=1; i<=3; i++) {

if(newwz[i]==t)

{

cout<<newstep<<endl;cout<<newczxl[i]<<endl; return 0;

}

int nxx=newwz[i];

if(vis[nxx]==0&&nxx>=0&&nxx<=100000)

{

Q.push({nxx,newstep,newczxl[i]});

vis[nxx]=1;

}

}

}

cout<<"wujie"<<endl;

return 0;

}

相关知识

字符串 (C++/CX)
鲜花系列香薰蜡烛.(狐仙魔法)
c++学习
c++第二次实验
C++: 水仙花数
C++中重载、重写(覆盖)的区别实例分析
c++ TCHAR转string导致中文缺失或乱码问题及解决
[BOT]植物魔法 (Botania)
养花大亨 魔法花(养花大亨魔法花配法图留种子)
魔法草药/植物(一)

网址: 魔法鲜花c++ https://m.huajiangbk.com/newsview486839.html

所属分类:花卉
上一篇: 深度学习实战(二):AlexNe
下一篇: 基于Java中的SSM框架实现在