码迷,mamicode.com
首页 > 其他好文 > 详细

回溯2--部分全排列

时间:2017-07-05 01:13:06      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:个数   .com   return   集合   logs   png   ace   bsp   分享   

回溯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--部分全排列

标签:个数   .com   return   集合   logs   png   ace   bsp   分享   

原文地址:http://www.cnblogs.com/Renyi-Fan/p/7119171.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!