首页 > 代码库 > 【搜索练习】
【搜索练习】
n的全排列
题目描述
输入一个整数n,输出的n的全排列。
输入
输出
样例输入
3
样例输出
1 2 31 3 22 1 32 3 13 1 23 2 1
#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>using namespace std;int n;int visi[1005],a[1005];void print(int x) { for(int i=1;i<x;++i)printf("%d ",a[i]); printf("%d",a[x]); puts("");} void dfs(int cur) { if(cur==n+1)print(cur-1); else for(int i=1;i<=n;i++) { if(!visi[i]) { a[cur]=i; visi[i]=1; dfs(cur+1); visi[i]=0; } } } int main(){ cin>>n; dfs(1); puts(""); return 0;}
1542: n个数中取m个数从小到大排列
题目描述
n个数中取m个数从小到大排列,详见样例。
输入
输出
样例输入
3 2
样例输出
1 21 32 3
当你要输出全排列的时候,你的cur是到N+1的时候结束
那么cur记录的是当前答案长度是多少
那么你要取M个 答案长度就是M
他是按照字典序输出的
你搜索的时候找这个位置上的数是多少肯定是for1到n
那么先输出的肯定是字典序最小的
所以就不需要考虑排序的问题啦
【搜索练习】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。