```cout<<now<<endl;```?
by HarryKane @ 2022-09-10 16:06:16
这题也能评蓝?!
一个细节问题,AC代码如下:
```cpp
#include<bits/stdc++.h>
using namespace std;
int m,t,dp[100000];
string s;
bool vis[100000];
struct node{
string str;
int s;
};
queue<node> qt;
int main(){
cin>>s;
scanf("%d",&m);
qt.push({s,0});
int num=atoi(s.c_str());
vis[num]=1;
memset(dp,-1,sizeof(dp));
dp[num]=0;
while(!qt.empty()){
string now=qt.front().str;
int ss=qt.front().s;
qt.pop();
int len=now.length();
for(int i=0;i<len-1;i++){
for(int j=i+1;j<len;j++){
swap(now[i],now[j]);
int num=atoi(now.c_str());
if(!vis[num]){
vis[num]=1;
dp[num]=ss+1;
qt.push({now,ss+1});
}
swap(now[i],now[j]);
}
}
for(int i=0;i<len;i++){
string p=now;
p.erase(i,1);
int num=atoi(p.c_str());
if(!vis[num]){
vis[num]=1;
dp[num]=ss+1;
qt.push({p,ss+1});
}
}
if(len<s.length()){
for(int i=0;i<len-1;i++){
for(char j=now[i]+1;j<now[i+1];j++){
string p=now;
p.insert(i+1,1,j);
int num=atoi(p.c_str());
if(!vis[num]){
vis[num]=1;
dp[num]=ss+1;
qt.push({p,ss+1});
}
}
}
}
}
while(m--){
scanf("%d",&t);
printf("%d\n",dp[t]);
}
return 0;
}
```
by YuRuochen @ 2022-09-10 16:11:20
@[HarryKane](/user/667808) 调试用的
by YuRuochen @ 2022-09-10 16:11:54
@[YuRuochen](/user/658786) 要不,给个关注把(
by HarryKane @ 2022-09-10 16:12:50
@[HarryKane](/user/667808) ?
by YuRuochen @ 2022-09-10 16:17:16