回溯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 }
版权申明:欢迎转载,但请注明出处
一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。
在校每年国奖、专业第一,加拿大留学,先后工作于华东师范大学和香港教育大学。
2024-09-05:27岁,宅加太忙,特此在网上找女朋友,vx:fan404006308
AI交流资料群:753014672