#include<stdio.h>
#include<string.h>
int temp[50];
int mark[50];
int b[50];
int n;
int count;
void dfs(int level)
{
int i, j, k = 0;
if(count > 20)
return;
if(level == n + 1){
for(i = 1; i <= n; i++){
k = 0;
memset(temp, 0, sizeof(temp));
for(j = i + 1; j <= n; j++){//判断有没有逆序
if(b[j] < b[i]){
temp[k++] = b[j];
/* if(b[j] > temp)
return;
else
temp = b[j];*/
}
for(int z = 0; z < k ; z ++){
if(k > 1)
if(temp[z] < temp[z + 1])
return;
}
}
}
if(i == n + 1){
count++;
if(count <= 20){
for(i = 1; i <= n; i++)
printf("%d", b[i]);
printf("\n");
}
}
}
else{
for(i = 1; i <= n; i++){
if( mark[i] == 0){
mark[i] = 1;
b[level] = i;
dfs(level + 1);
mark[i] = 0;
}
}
}
}
int main()
{
scanf("%d", &n);
dfs(1);
return 0;
}
火车进站
最新推荐文章于 2020-12-24 13:06:38 发布