Mn Zn不理解 为什么数组能输出,不能等于零?
  • 板块学术版
  • 楼主Chen小阳啊
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/10/26 14:49
  • 上次更新2023/10/27 05:48:53
查看原帖
Mn Zn不理解 为什么数组能输出,不能等于零?
557927
Chen小阳啊楼主2022/10/26 14:49

CSP-S 2021 回文

using namespace std;
int a[100100];
int q1[100100],q2[100100];
int f1,p1,f2,p2;
char ord[100100];
int or1,or2;
int pd;
bool check(){
	while(f1<=p1||f2<=p2){
		for(int i=f1;i<=p1;i++){
			cout<<q1[i]<<' '; 
		}
		cout<<endl;
		for(int i=f2;i<=p2;i++){
			cout<<q2[i]<<' ';
		}
		cout<<endl;
		pd=0;
		if(f1==p1&&f2==p2){
			if(q1[p1]!=q2[p2]){
				return 0;
			}
			ord[++or1]='L';
			ord[--or2]='R';
			f1++;
			p2--;
		}
		else if(q1[f1]==q1[p1]){
			ord[++or1]='L';
			ord[--or2]='L';
			f1++;
			p1--;
		}
		else if(q1[f1]==q2[p2]){
			ord[++or1]='L';
			ord[--or2]='R';
			f1++;
			p2--;
		}
		else if(q2[f2]==q1[p1]){
			ord[++or1]='R';
			ord[--or2]='L';
			f2++;
			p1--;
		}
		else if(q2[f2]==q2[p2]){
			ord[++or1]='R';
			ord[--or2]='R';
			f2++;
			p2--;
		}
		else {
			return 0;
		}
	}
	return 1;
}
int main(){
	int t;
	freopen("1.txt","w",stdout);
	cin>>t;
	while(t--){
		for(int i=f1;i<=p1;i++){
			cout<<q1[i]<<' '; 
       //q1[i]=0;
       //这里赋0就炸了
		}
		cout<<endl;
		for(int i=f2;i<=p2;i++){
			cout<<q2[i]<<' ';
       //q2[i]=0;
       //同
		}
		cout<<endl;
		f1=p1=f2=p2=0;
		int n;
		cin>>n;
		n*=2;
		ord[1]=ord[n]='L';
		or1=1;or2=n;
		for(int i=1;i<=n;i++){
			cin>>a[i];
		}
		int mid=0;
		for(int i=2;i<=n;i++){
			if(a[i]==a[1]){
				mid=i;
				break;
			}
		}
		for(int i=2;i<mid;i++){
			q1[++p1]=a[i];
		}
		for(int i=n;i>mid;i--){
			q2[++p2]=a[i];
		}
		f1=f2=1;
		if(check()){
			for(int i=1;i<=n;i++){
				cout<<ord[i];
			}
			cout<<endl;
		}
		else {
			f1=f2=1;
			or1=1;or2=n;
			p1=p2=0; 
			ord[1]='R';
			ord[n]='L';
			for(int i=2;i<mid;i++){
				q2[++p2]=a[i];
			}
			for(int i=n;i>mid;i--){
				q1[++p1]=a[i];
			}
			if(check()){
				for(int i=1;i<=n;i++){
					cout<<ord[i];
				}
				cout<<endl;
			}
			else {
				cout<<-1<<endl;
			}
		}
	}
}
2022/10/26 14:49
加载中...