文章
11
粉丝
406
获赞
3
访问
84.7k
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<unordered_map>
using namespace std;
int n,limit,mm;
string s,a="2012";
unordered_map<string,int> m;
void backtrack(int k){
if(k>limit)return;
// printf("li-%d;",k);
if(s.find(a)!=string::npos){
mm=(k<mm)?k:mm;
return;
}
for(int i=0;i<=n-2;++i){
swap(s[i],s[i+1]);
if(!m.count(s)||m[s]>k+1){
backtrack(k+1);
m[s]=k+1;
}
swap(s[i],s[i+1]);
}
}
int main(){
while(cin>>n){
cin>>s;
// limit=n*(n-1)/2;
limit=7;
mm=n*n;
m.clear();
m[s]=0;
backtrack(0);
(mm==n*n)?printf("%d\n",-1):printf("%d\n",mm);
}
return 0;
}
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<unordered_map>
#include<queue>
using namespace std;
...
登录后发布评论
暂无评论,来抢沙发