解题思路:
注意事项:
参考代码:
//由数学知识可知,有n-1的阶乘种可能,真的吗?(其实是错误的,可以写一下,但不知为啥能过编译,很神奇)
#include
int main ()
{
int n;
while(scanf("%d",&n)!=EOF){
int sum=1;
n--;
while(n){sum*=n;n--;}
printf ("%d\n",sum);
}
return 0;
}
正确代码如下,递归思路
实例
1
0
2
1
3
2
4
9
5
44
6
265
7
1854
8
14833
9
133496
#include<stdio.h>
int n,sum=0;
int people[100];
void swap(int k,int i)
{
int temp=people[k];
people[k]=people[i];
people[i]=temp;
}
void qurt_sort(int k )
{
if(k==n)
{
for(int i=1;i<=n;i++)
if(people[i]==i)
{
goto part;
}
/* for(int i=1;i<=n;i++)
printf("%d ",people[i]);
printf("\n");*/
sum++;
part: ;
}
else
{
for(int i=k;i<=n;i++)
{
swap(k,i);
qurt_sort(k+1);
swap(k,i);
}
}
}
int main ()
{
while(scanf("%d",&n)!=EOF)
{
for(int i=1;i<=n;i++)
people[i]=i;
qurt_sort(1);
printf("%d\n",sum);
sum=0;
}
return 0;
}
0.0分
0 人评分