递归练习:全排列
【摘要】
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
这种题目需要典型的递归手段,在一般的面试题目中也会经常出现。
递归的题目在设计的时候要注意递归边界和递归条件。按这样的框架去设计算法不容易再无穷的递归中迷失自我。
以下是我的程序...
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
这种题目需要典型的递归手段,在一般的面试题目中也会经常出现。
递归的题目在设计的时候要注意递归边界和递归条件。按这样的框架去设计算法不容易再无穷的递归中迷失自我。
以下是我的程序,请参考:
-
#include<cstdio>
-
#include<iostream>
-
#include<cstring>
-
#include<algorithm>
-
using namespace std;
-
const int maxn =11;
-
int n,P[maxn],hashTable[maxn] = {false},num=0;
-
void qpl(int index)
-
{
-
//边界条件
-
if(index == n+1)
-
{
-
for(int i=1;i<=n;i++)
-
{
-
printf("%d",P[i]);
-
}
-
num++;
-
printf("\n");
-
return;
-
}
-
-
for(int i=1;i<=n;i++)//填入1-n位位置
-
{
-
if(hashTable[i]==false)
-
{
-
P[index]=i;
-
hashTable[i]=true;
-
qpl(index+1);
-
hashTable[i]=false;
-
}
-
}
-
-
}
-
int main()
-
{
-
scanf("%d",&n);//输入位数,位数初始小于11
-
qpl(1);
-
printf("\nThe cout is %d\n",num);
-
return 0;
-
}
文章来源: blog.csdn.net,作者:沧夜2021,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/CANGYE0504/article/details/89255652
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)