文章
10
粉丝
168
获赞
0
访问
52.3k
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int INF=1e9;
char s[20];
int n;
bool st[20];
int MAX;
bool first_judge(){
int a[3]={0,0,0};
for(int i=0;i<n;i++)
a[s[i]-'0']++;
if(a[2]<2 || a[0]<1 || a[1]<1) return true;
return false;
}
bool judge(){
for(int i=0;i<n-3;i++)
if(s[i]=='2' && s[i+1]=='0' && s[i+2]=='1' && s[i+3]=='2')
return true;
return false;
}
bool dfs(int num,int idx){
if(judge()){
return true;
}
if(num+1>MAX) return false;
for(int i=0;i<n-1;i++){
if(i==idx) continue;
swap(s[i],s[i+1]);
if(dfs(num+1,i)) return true;
swap(s[i],s[i+1]);
}
return false;
}
int main(){
while(cin>>n>>s){
if(first_judge()){
cout<<-1<<'\n';
continue;
}
memset(st,false,sizeof st);
MAX=0;
while(!dfs(0,-1)) MAX++;
cout<<MAX<<'\n';
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发