哪个大佬帮帮本蒟蒻看看爆0的代码~~ 我为啥输入不了?
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
string a;
struct spt{
string str;
int ans,r[400000];
};
queue<spt>q;
int find(string x){
int ans;
for(int i=0;i<9;i++){
for(int j=i+1;j<=9;j++){
if(x[i]>x[j]){
ans++;
}
}
}
return ans+1;
}
string Y_z(string a){
string b=" ";
b[1-1]=a[4-1];
b[2-1]=a[1-1];
b[3-1]=a[2-1];
b[4-1]=a[7-1];
b[5-1]=a[5-1];
b[6-1]=a[3-1];
b[7-1]=a[8-1];
b[8-1]=a[9-1];
b[9-1]=a[6-1];
return b;
}
string N_z(string a){
string b=" ";
b[1-1]=a[2-1];
b[2-1]=a[3-1];
b[3-1]=a[6-1];
b[4-1]=a[1-1];
b[5-1]=a[5-1];
b[6-1]=a[9-1];
b[7-1]=a[4-1];
b[8-1]=a[7-1];
b[9-1]=a[8-1];
return b;
}
int main(){
cin>>a;
spt news;
news.str=a;
q.push(news);
q.front().r[find(a)]=1;
while(!q.empty()){
spt nw=q.front();
q.pop();
if(nw.str=="123405678"){
cout<<nw.ans;
return 0;
}
if(!nw.r[find(nw.str.substr(3,6)+nw.str.substr(0,3))]){
nw.r[find(nw.str.substr(3,6)+nw.str.substr(0,3))]=1;
news=nw;
news.str=nw.str.substr(3,6)+nw.str.substr(0,3);
news.ans++;
q.push(news);
nw.r[find(nw.str.substr(3,6)+nw.str.substr(0,3))]=0;
}
if(!nw.r[find(Y_z(nw.str))]){
nw.r[find(Y_z(nw.str))]=1;
news=nw;
news.str=Y_z(nw.str);
news.ans++;
q.push(news);
nw.r[find(Y_z(nw.str))]=0;
}
if(!nw.r[find(N_z(nw.str))]){
nw.r[find(N_z(nw.str))]=1;
spt news=nw;
news.str=N_z(nw.str);
news.ans++;
q.push(news);
nw.r[find(N_z(nw.str))]=0;
}
}
cout<<"No answer";
return 0;
}
多指教。