回溯7--选书

本文介绍了一道简单的回溯算法题目,通过示例代码详细解析了如何利用回溯法解决特定问题。具体展示了如何使用标志数组来标记已选择的元素,并递归地搜索所有可能的组合。

回溯7--选书

一、心得

最简单的回溯题

数组中还有一个符合条件的那种数组

二、题目及分析

三、代码及结果

 1 /*
 2 这里多了一个符合条件的标志数组 
 3 */
 4 #include <iostream>
 5 using namespace std;
 6 
 7 int like[6][6]={{0,0,0,0,0,0},{0,0,0,1,1,0},{0,1,1,0,0,1},{0,0,1,1,0,0},{0,0,0,0,1,0},{0,0,1,0,0,1}}; 
 8 int vis[6];
 9 int ans[6];
10 int total=0;
11 
12 void print(){
13     total++;
14     cout<<total<<": "<<endl;
15     for(int i=1;i<=5;i++){
16         cout<<ans[i]<<" ";
17     }
18     cout<<endl;
19 }
20 
21 void search(int step){
22     if(step==6) print();
23     else
24         for(int i=1;i<=5;i++){
25             if(!vis[i]&&like[step][i]){
26                 ans[step]=i,vis[i]=1;
27                 search(step+1);
28                 vis[i]=0;
29             }
30         }
31 }
32 
33 
34 int main(){
35     search(1);
36     return 0;
37 }

转载于:https://www.cnblogs.com/Renyi-Fan/p/7124353.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值