博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj1014
阅读量:6824 次
发布时间:2019-06-26

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

简单背包

View Code
#include 
using namespace std;const int maxn = 8, maxm = 120002;int marble[maxn], total;bool f[maxn][maxm];void init(){ int i; bool end = true; total = 0; for (i = 1; i <= 6; i++) { cin >> marble[i]; total += marble[i] * i; if (marble[i] != 0) end = false; } if (!total) exit(0);}void work(){ int i, j, goal = total / 2, k; memset(f, 0, sizeof(f)); f[0][0] = true; for (i = 0; i <= 6; i++) { for (j = goal; j >= 0; j--) { if (!f[i][j]) continue; for (k = 0; k <= marble[i]; k++) { if (j + k * i > goal) break; if (f[i + 1][j + k * i]) break; f[i + 1][j + k * i] = true; } } } if (f[7][goal]) printf("Can be divided.\n\n"); else printf("Can't be divided.\n\n");}int main(){ int t = 0; bool first; //freopen("t.txt", "r", stdin); first = true; while (true) { t++; init(); printf("Collection #%d:\n", t); if (total % 2 != 0) { printf("Can't be divided.\n\n"); continue; } work(); } return 0;}

 

转载于:https://www.cnblogs.com/rainydays/archive/2012/12/12/2814624.html

你可能感兴趣的文章
递推算法
查看>>
《Effective C++ 》学习笔记——条款12
查看>>
oracle goldengate 远程捕获和投递
查看>>
(转)OGNL与值栈
查看>>
高速排序算法C++实现
查看>>
《快学Scala》第一章 基础
查看>>
ospf动态路由配置(单区域)
查看>>
【C++ Primer每日刷】之三 标准库 string 类型
查看>>
gitlab仓库服务器搭建
查看>>
算法之美_源码公布(5)
查看>>
接口多继承自接口和接口是否可以继承自一般类的疑问?
查看>>
BZOJ 1061: [Noi2008]志愿者招募【单纯形裸题】
查看>>
oracle中数据类型对应java类型
查看>>
【树莓派】树莓派3与手机之间蓝牙连接配置记录
查看>>
com.mongodb.MongoException$CursorNotFound: cursor not found on server异常处理
查看>>
Kotlin : Retrofit + RxAndroid + Realm
查看>>
栈1--出栈序列
查看>>
原码 补码
查看>>
ListView setOnItemClickListener无效原因分析
查看>>
DD测磁盘读写性能
查看>>