uva624(DP)
来源:互联网 发布:写编程到底什么意思 编辑:程序博客网 时间:2024/05/26 02:19
求解:
for(int i = 0; i < tracks; i++) {
for(int j = N; j >= 0;j–) {
if(j >= t[i] && dp[j] <= dp[j - t[i]] + t[i] && dp[j - t[i]]+t[i] <= N) {
dp[j] = dp[j - t[i]] + t[i];
// f[j] = 1; 为什么加上这些要保存值的答案就会错误
// save[j] = i;
}
代码:
#include <iostream>using namespace std;#include <stdio.h>#include <cstring>int N;int tracks;int t[25];int f[25];int dp[25];int save[25];int main() { while(scanf("%d",&N) != EOF) { scanf("%d",&tracks); for(int i = 0; i < tracks; i++) { scanf("%d",&t[i]); // cout << t[i] <<endl; } memset(dp,0,sizeof(dp)); memset(f,0,sizeof(f)); int _max = 0; for(int i = 0; i < tracks; i++) { for(int j = N; j >= 0;j--) { if(j >= t[i] && dp[j] <= dp[j - t[i]] + t[i] && dp[j - t[i]]+t[i] <= N) { dp[j] = dp[j - t[i]] + t[i]; // f[j] = 1;a // save[j] = i; } //printf("%d ",f[j]); _max = max(_max,dp[j]); //printf("%d\n",_max); } //printf("%d\n",_max); } // print(N); for(int i = 0,j = N; i < tracks && j >= 0; i++) { } printf("%d\n",_max); } return 0;}
0 0
- uva624(DP)
- uva624
- UVA624
- UVA624:CD
- (未完全)uva624
- uva624-CD(背包)
- [动态规划]UVA624 - CD
- UVA624 - CD (DFS)
- uva624(0-1背包)
- 《ACM程序设计》例题解析-UVa624
- Uva624 CD (记录路径)
- uva624 CD 01背包 打印路径
- uva624 - CD(动规,01背包问题)
- Uva624(记录路径的01背包)
- uva624(01背包+打印路径)
- UVA624(01背包 + 路径打印)
- uva624 - CD(01背包+打印路径)
- 01背包问题【简单背包,UVA624】
- 欢迎使用CSDN-markdown编辑器
- appium for python client scroll to view(not in current screen)
- Partition-方案二:通过 Insert with a subquery 方法
- 基于内容的图像检索引擎(以图搜图)
- LintCode:子数组之和
- uva624(DP)
- uva208
- Android Json解析工具类
- linux基础之文件查找
- 设计模式中的七个原则
- Android控件HorizontalScrollView/listview去掉滚动条
- sdutoj 3362 数据结构实验之图论六:村村通公路(最小生成树(裸的))
- Android Studio编译NDK app gradle配置
- Codeforces Round #352 (Div. 2)C. Recycling Bottles