首页 > 代码库 > 回溯2--部分全排列
回溯2--部分全排列
回溯2--部分全排列
一、心得
二、题目及分析
设有n个整数的集合{1,2,...,n},从中任意取出r个数进行排列(r<n),试着列出所有排列
全排列的阉割版,修改输出限制条件即可
三、代码及结果
1 /* 2 设有n个整数的集合{1,2,...,n},从中任意取出r个数进行排列(r<n),试着列出所有排列 3 4 全排列的阉割版,修改输出限制条件即可 5 6 */ 7 #include <iostream> 8 using namespace std; 9 //三个数组 10 bool vis[100]; 11 int total=0; 12 int ans[100]; 13 14 //输出结果 15 void print(int r){ 16 if(total==5) return ; 17 total++; 18 cout<<"<"<<total<<">"<<endl; 19 for(int i=1;i<=r;i++){ 20 cout<<ans[i]<<" "; 21 } 22 cout<<endl; 23 } 24 25 void search(int t,int n,int r){ 26 if(t==r+1) print(r); 27 for(int i=1;i<=n;i++){ 28 if(!vis[i]){ 29 ans[t]=i,vis[i]=1; 30 search(t+1,n,r); 31 vis[i]=0; 32 } 33 } 34 } 35 36 int main(){ 37 int n,r; 38 cin>>n>>r; 39 search(1,n,r); 40 cout<<total<<endl; 41 return 0; 42 }
回溯2--部分全排列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。