I'm a people.
2025-02-09 19:27:55
发布于:北京
#include<bits/stdc++.h>
using namespace std;
string s,t;
int n;
map<string ,int> dis;
string you(string f){
return f.substr(n-1,n)+f.substr(0,n-1);
}
string zuo(string f){
return f.substr(1,n)+f.substr(0,1);
}
string beng(string f){
if(f[n-1]>='1' && f[n-1]<='9'){
f[n-1]=f[n-1]-1;
}else{
f[n-1]='9';
}
return f;
}
void bfs(string start){
queue<string> q;
q.push(start);
dis[start]=1;
while(!q.empty()){
string f=q.front();
q.pop();
if(f==t){
return;
}
if(f[1]!='0'){
string ff=zuo(f);
if(!dis[ff]){
dis[ff]=dis[f]+1;
q.push(ff);
}
}
if(f[n-1]!='0'){
string ff=you(f);
if(!dis[ff]){
dis[ff]=dis[f]+1;
q.push(ff);
}
}
string ff=beng(f);
if(!dis[ff]){
dis[ff]=dis[f]+1;
q.push(ff);
}
}
}
//f/=10+f%=10 * pow(10,n);
int main(){
cin>>n>>s>>t;
bfs(s);
cout<<dis[t]-1;
return 0;
}
这里空空如也
有帮助,赞一个