蒟蒻求助
查看原帖
蒟蒻求助
186954
aaac楼主2022/9/30 12:12
#include<bits/stdc++.h>
using namespace std;

string ans;
bool flag;
int n;

bool is(deque<int>q)
{
	for(int i=1;i<=n;++i)
	{
		if(q.front()!=q.back())
			return 0;
		q.pop_front();
		q.pop_back();
	}
	return 1;
}

void dfs(deque<int> A,deque<int> B)
{
	if(flag)
		return ;
	if(A.empty())
	{
		if(is(B))
		{
			for(int i=0;i<ans.size();++i)
				cout<<ans[i];
			cout<<endl;
			flag=1;
		}
	}
	int cnt=A.front();
	B.push_back(cnt);
	A.pop_front();
	ans+="L";
	dfs(A,B);
	A.push_front(cnt);
	B.pop_back();
	ans[ans.size()-1]='R';
	cnt=A.back();
	B.push_back(cnt);
	A.pop_back();
	dfs(A,B);
	A.push_back(cnt);
	B.pop_back();
	ans.erase(ans.size()-1); 
}

inline int read()
{
	char ch=getchar();
	int f=1,s=0;
	while(ch<'0'||ch>'9')
	{
		if(ch=='-')
			f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
	{
		s=(s<<3)+(s<<1)+(ch^48);
		ch=getchar();
	}
	return f*s;
}

int main()
{
	int t=read();
	for(int i=1;i<=t;++i)
	{
		n=read();
		deque<int>A,B;
		for(int j=1;j<=2*n;++j)
			A.push_back(read());
		flag=0;
		dfs(A,B);
		if(!flag)
			cout<<-1<<endl;
	}
	return 0;
}
2022/9/30 12:12
加载中...