hdu(2260) Accepted Necklace
来源:互联网 发布:剑灵夕颜捏脸数据 编辑:程序博客网 时间:2024/05/23 14:33
//这个做着很顺,一下就对了,难道找到感觉了;
//用回朔法,把所有值遍历一遍,取其中最大值即可;
#include"stdio.h"
#include"string.h"
int k,h,a[30],b[30];
int visit[30],max,m;
void bfs(int n,int v,int w,int l)
{
int i;
if(n==k&&v<=h)
{
if(max<w)
max=w;
}
for(i=l;i<=m;i++)
{
if(visit[i]==0&&v+b[i]<=h)
{
visit[i]=1;
bfs(n+1,v+b[i],w+a[i],i+1);
visit[i]=0;
}
}
}
int main()
{
int i,p;
scanf("%d",&p);
while(p--)
{
scanf("%d%d",&m,&k);
memset(visit,0,sizeof(visit));
for(i=1;i<=m;i++)
scanf("%d%d",&a[i],&b[i]);
scanf("%d",&h);
max=0;
bfs(0,0,0,0);
printf("%d\n",max);
}
return 0;
}
dp的做法;
#include<stdio.h>
#include<string.h>
int dp[1005][25];
int a[100],b[100];
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int t,m,n,k,i,j,h;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&k);
for(i=0;i<n;i++)
scanf("%d%d",&a[i],&b[i]);
scanf("%d",&m);
memset(dp,0,sizeof(dp));
for(i=0;i<n;i++)
{
for(j=m;j>=b[i];j--)
{
for(h=k;h>0;h--)
{
dp[j][h]=max(dp[j][h],dp[j-b[i]][h-1]+a[i]);
}
}
}
printf("%d\n",dp[m][k]);
}
return 0;
}
- hdu(2260) Accepted Necklace
- HDU 2660 Accepted Necklace (DFS)
- hdu 2660 Accepted Necklace(dfs、dp)
- hdu 2660 Accepted Necklace
- hdu-2660 Accepted Necklace
- hdu 2660 Accepted Necklace
- HDU 2660 Accepted Necklace
- HDU 2660 Accepted Necklace
- hdu 2660 Accepted Necklace
- HDU 2660 Accepted Necklace
- HDU 2660 Accepted Necklace
- hdu 2660 Accepted Necklace(dp)
- hdu 2660 Accepted Necklace DFS
- hdu 2660 Accepted Necklace (二维01背包)
- HDU 2660 Accepted Necklace(DFS解01背包)
- HDU 2660 Accepted Necklace (01背包,dfs)
- hdu2660(Accepted Necklace)-dfs
- 杭电 HDU 2660 Accepted Necklace
- objective c 内存管理
- c++ primer 学习笔记:类之构造函数
- SOJ 1424奖金
- 再读LDD3前言
- 数据库重复加载问题
- hdu(2260) Accepted Necklace
- 腾讯QQ群自动采集 工具,纯网页版。需要登录 JSON方式
- JAVA ACM 基础
- 黑马程序员------C#参数
- paip.cpu占用高解决方案---ThreadMast 跟Process Lasso的使用
- android 内存溢出问题分析
- 浅析Java中的两种异常
- 加密技术发展史(1)
- [poj 1149]PIGS[网络流][Edmonds-Karp][Dinic]