人生亦梦


私信TA

用户名:uq_55161405400

访问量:8177

签 名:

追寻强大且简洁的算法解疑,不会有难题,因而我为此痴迷

等  级
排  名 3033
经  验 1978
参赛次数 1
文章发表 25
年  龄 0
在职情况 学生
学  校
专  业 网络空间安全

  自我简介:

菜,并痴迷着; 爱,并奋斗着

解题思路:

注意事项:

参考代码:

//由数学知识可知,有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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区