2016SDAU课程练习三1024
2016-05-30 23:03
387 查看
1.题目编号:1024
2.简单题意:01背包问题
3.解题思路形成:首先给出物品数量和手中资金人后每样物品给出价格,需要购买时手中至少需要多少资金,还有物品本身的价值要求求出最大资金
4.感想:看不懂英语。。。或者看懂了,理解错了
5.AC代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
struct node
{
int p,q,v;
} a[555];
int cmp(node x,node y)
{
return x.q-x.p<y.q-y.p;
}
int main()
{
int n,m,i,j;
int dp[5555];
while(~scanf("%d%d",&n,&m))
{
for(i = 0; i<n; i++)
scanf("%d%d%d",&a[i].p,&a[i].q,&a[i].v);
memset(dp,0,sizeof(dp));
sort(a,a+n,cmp);
for(i = 0; i<n; i++)
{
for(j = m; j>=a[i].q; j--)
{
dp[j] = max(dp[j],dp[j-a[i].p]+a[i].v);
}
}
printf("%d\n",dp[m]);
}
return 0;
}
2.简单题意:01背包问题
3.解题思路形成:首先给出物品数量和手中资金人后每样物品给出价格,需要购买时手中至少需要多少资金,还有物品本身的价值要求求出最大资金
4.感想:看不懂英语。。。或者看懂了,理解错了
5.AC代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
struct node
{
int p,q,v;
} a[555];
int cmp(node x,node y)
{
return x.q-x.p<y.q-y.p;
}
int main()
{
int n,m,i,j;
int dp[5555];
while(~scanf("%d%d",&n,&m))
{
for(i = 0; i<n; i++)
scanf("%d%d%d",&a[i].p,&a[i].q,&a[i].v);
memset(dp,0,sizeof(dp));
sort(a,a+n,cmp);
for(i = 0; i<n; i++)
{
for(j = m; j>=a[i].q; j--)
{
dp[j] = max(dp[j],dp[j-a[i].p]+a[i].v);
}
}
printf("%d\n",dp[m]);
}
return 0;
}
相关文章推荐
- linux高性能服务器编程之epoll
- js的引用类型和类型转换以及js的语句
- [iOS]多线程和GCD
- 总结
- UINavigationController和UITabBarController合用
- Python连接SQL Server入门
- 导入JFrame时eclipse编译报错
- (转载)请不要做浮躁的人
- mysql的安装
- opecncv不同深度图像的转换(IPL_DEPTH_8U和IPL_DEPTH_32F)
- SSM之DAO部分Spring与MyBatis整合
- Ubuntu系统必须软件安装备忘
- 第7课:Spark Streaming源码解读之JobScheduler内幕实现和深度思考
- [置顶] 一周时间Linux学习心得
- Codeforces Round #341 (Div. 2)B. Wet Shark and Bishops
- HDU 5692 Snacks dfs序 + 线段树
- 导入错误,Gradle version 2.10 is required. Current version is 2.8
- Matlab 提取二值图像中心线 (Matlab extract centreline of binary image)
- PrimusUI
- 树莓派随笔