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;
}

浙公网安备 33010602011771号