萌新求大佬解决问题
查看原帖
萌新求大佬解决问题
33063
Focus_on楼主2021/10/26 18:10

rt,该程序 肯定是错解的 但是错误原因是行太长

求找错!!


//I love ccf

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>

using namespace std;

int n,a[5010*2],b[5010*2],h1,t1,t2,T;
char ls[5010*2];
bool fl=0;

void dfs(int stp){
	
	if(fl) return;
	
	if(stp>2*n){
		for(int i=1;i<=n;i++)
			if(b[i]!=b[2*n+1-i]) return;
		fl=1;
		for(int i=1;i<=2*n;i++)
			putchar(ls[i]);
		putchar('\n');
		return;
	}
	
	b[++t2]=a[h1++];
	ls[stp]='L';
	dfs(stp+1);
	ls[stp]='\0';
	t2--; h1--;
	
	b[++t2]=a[t1--];
	ls[stp]='R';
	dfs(stp+1);
	ls[stp]='\0';
	t2--; t1++;
}

int main(){
	
// 	freopen("palin1.in","r",stdin);
// 	freopen("palin.out","w",stdout);
	
	scanf("%d",&T);
	while(T--){
		
		scanf("%d",&n);
		for(int i=1;i<=2*n;i++) scanf("%d",&a[i]);
		
		bool flag=0;
		for(int i=1;i<=n;i++)
		if(a[i]!=a[2*n+1-i]){
			flag=1;
			break;
		}
		
		if(!flag){
			
			for(int i=1;i<=2*n;i++) putchar('L');
			continue;
		}
		
		h1=1; t1=2*n; t2=0; fl=0;
		dfs(1);
		
		if(!fl) puts("-1");
	}
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
}

//36pts+0
2021/10/26 18:10
加载中...