/*挺简单的就是dfs,写的比较容易明白
在仔细看其实1,只能在第一个,10只能在最后一个,这样就是8个数
我用的是一维数组,
需要判断一下下标问题,
下标
0 | 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 | 10 |
当下标为5的时候不需要判断是否大于前面的数
目前水平就这样见谅
*/
#include<stdio.h>
int s = 0;
int a[10] = {1,0,0,0,0,0,0,0,0,10};
int b[11] = {0};
int f(int n);//函数声明
int f1(int n,int i)//调用函数函数
{
a[n] = i;
f(n+1);
a[n] = 0;
}
int printff()//输出函数
{
s++;
int i;
printf("%d个\n",s);
for(i = 0; i < 10; i++)
{
if(i == 5)printf("\n");
printf("%d ",a[i]);
}
printf("\n");
}
int f(int n)
{
int i;
if(n == 9)
{
printff();
}
else
for(i = 2;i < 10; i++)
{
if(b[i] == 0)
{
b[i] = 1;
if(n == 5)
{
f1(n,i);
}
else if(n > 5)
{
if(i > a[n - 5] && i > a[n -1])
{
f1(n,i);
}
}
else if(n > 0 && i > a[n - 1])
{
f1(n,i);
}
b[i] = 0;
}
}
}
int main()
{
f(1);
}