1130: 奇偶交错排列

n!复杂度,使用dfs递归形式遍历

#include <bits/stdc++.h>
using namespace std;
int ans[13];
bool vis[13];
int n;
void dfs(int now ,int last){	//last是指上一个数的奇偶性质
	if(now == n){
		for(int i=0 ;i<n;i++){
			printf("%d ",ans[i]);
		}
		printf("\n");
		return;
	} 
	for(int i=1;i<=n;i++){
		if((!vis[i])&& (i&1) != last){
			vis[i]=1;
			ans[now] = i;
			dfs(now+1,i&1);
			vis[i]=0;
		}
	}
}
int main(){
	while(scanf("%d",&n)!=EOF){
		dfs(0,-1) ;
	}
	return 0;
} 
posted @ 2026-03-03 01:41  peter_shen  阅读(11)  评论(0)    收藏  举报