请问这题的输出顺序是什么?
查看原帖
请问这题的输出顺序是什么?
658786
STUDENT00楼主2022/9/29 21:07

样例没过,输出顺序错了……()()

#include<bits/stdc++.h>
using namespace std;
int n,a[10];
char f(int k){
	if(k==1) return '+';
	else if(k==2) return '-';
	else return ' ';
}
bool check(){
	int k=1,s=0,sum=0;
	for(int i=1;i<=n;i++){
		s=s*10+i;
		if(a[i]==1){
			sum+=s*k;
			s=0;
			k=1;
		}else if(a[i]==2){
			sum+=s*k;
			s=0;
			k=-1;
		}
	}
	sum+=s*k;
	return !sum;
}
void dfs(int now){
	if(now==n){
		if(check()){
			for(int i=1;i<n;i++) printf("%d%c",i,f(a[i]));
			printf("%d\n",n);
		}
		return;
	}
	for(int i=1;i<=3;i++){
		a[now]=i;
		dfs(now+1);
	}
}
int main(){
	scanf("%d",&n);
	dfs(1);
	return 0;
}
2022/9/29 21:07
加载中...