博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1460 健康的荷斯坦奶牛 Healthy(DFS)
阅读量:5038 次
发布时间:2019-06-12

本文共 1059 字,大约阅读时间需要 3 分钟。

思路:这道题还是用了小小的剪枝,这里要注意的是该题有很多中构建树的顺序,但是,在这众多顺序中不一定都能保证输出的方案字典序最小。

构建搜索树:如图构建

     

剪枝,emmm,看代码:

#include
using namespace std;int a[20][30];int b[30], an[30], mm[20], gg[20];int n, m, mins=1000, kk;bool f(){ for (int i = 1; i <= m;++i) if (b[i] > an[i])return 0; return 1;}void add_of_s(int s, int y){ for (int i = 1; i <= m; ++i) an[i] = an[i] + y*a[s][i];}void dfs(int s, int k){ if (k > n){ return; } if (kk >= mins){ return; } //剪枝 if (f()){ mins = kk; for (int i = 1; i <= mins; ++i)gg[i] = mm[i]; } for (int i = s+1; i <= n;++i) { kk++; mm[kk] = i; add_of_s(i, 1); dfs(i , k + 1); mm[kk] = 0; kk--; add_of_s(i, -1); }}int main(){ cin >> m; for (int i = 1; i <= m; ++i)cin >> b[i]; cin >> n; for (int i = 1; i <= n;++i) for (int j = 1; j <= m; ++j) cin >> a[i][j]; dfs(0, 0); cout << mins << " "; for (int i = 1; i <= mins; ++i) cout << gg[i] << " \n"[i == mins];}

 

转载于:https://www.cnblogs.com/ALINGMAOMAO/p/10662112.html

你可能感兴趣的文章
mysql忘记root密码
查看>>
apache服务器中设置目录不可访问
查看>>
嵌入式Linux驱动学习之路(十)字符设备驱动-my_led
查看>>
【NOIP模拟】密码
查看>>
java容器---------手工实现Linkedlist 链表
查看>>
three.js 性能优化的几种方法
查看>>
《梦断代码》读书笔记(三)
查看>>
FreeMarker解析json数据
查看>>
Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
查看>>
次序+“选择不重复的记录”(3)——最大记录
查看>>
Codeforces 450 C. Jzzhu and Chocolate
查看>>
[Unity3D]Unity3D游戏开发MatchTarget的作用攀登效果实现
查看>>
ACdream 1115 Salmon And Cat (找规律&amp;&amp;打表)
查看>>
JSON、JSONP、Ajax的区别
查看>>
AngularJS学习篇(一)
查看>>
【转载】 IP实时传输协议RTP/RTCP详解
查看>>
关于Xshell无法连接centos6.4的问题
查看>>
Linux系统的数据写入机制--延迟写入
查看>>
css3动画——基本准则
查看>>
SQLite详解,案例,手册
查看>>