#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
const int M = 2050;
int num[M] , temp[M] , n;
char ans[M];
bool flag;
void dfs(int step , int l , int r){
if(flag) return ;
//printf("step = %d l = %d r = %d\n" , step , l , r);
if(l > n / 2 || r > n / 2){
return;
}
if(step == n && l == n / 2 && r == n / 2){
flag = true;
return ;
}
ans[step] = '0';
temp[l] = num[step];
dfs(step + 1 , l + 1 , r);
if(flag) return;
if(temp[r] == num[step]){
ans[step] = '1';
//temp[r] = num[step];
dfs(step + 1 , l , r + 1);
}
return ;
}
int main(){
int t;
scanf("%d" , &t);
while(t --){
flag = false;
scanf("%d" , &n);
for(int i = 0 ; i < n ; i ++){
scanf("%d" , &num[i]);
}
dfs(0 , 0 , 0);
for(int i = 0 ; i < n ; i ++){
printf("%c" , ans[i]);
}
printf("\n");
}
return 0;
}
hdu 4665 Unshuffle (DFS)
最新推荐文章于 2021-10-21 18:26:48 发布