字符串の处理方式
2024-10-16 20:13:53
发布于:广东
4阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
struct node{
string p;
int step;
};
int main(){
int q;
cin >> q;
while(q --){
string a,b;
cin >> a >> b;
queue<node> q;
q.push({a,0});
map<string,bool> vis = {};
vis[a] = 1;
while(!q.empty()){
string s = q.front().p;
int istep = q.front().step;
q.pop();
if(s == b){
cout << istep << endl;
break;
}
for(int i = 0;i < s.size() - 1;i ++){
string np = s;
swap(np[i],np[i + 1]);
if(vis[np] == 0){
vis[np] = 1;
q.push({np,istep + 1});
}
}
for(int i = 0;i < s.size();i ++){
string np2 = s;
string np3 = s;
np2[i] --;
np3[i] ++;
if(np2[i] < '1'){
np2[i] = '9';
}
if(np3[i] > '9'){
np3[i] = '1';
}
if(vis[np2] == 0){
vis[np2] = 1;
q.push({np2,istep + 1});
}
if(vis[np3] == 0){
vis[np3] = 1;
q.push({np3,istep + 1});
}
}
}
}
return 0;
}
这里空空如也
有帮助,赞一个