关于poj 1276题 提交后老是显示结果不对。但是使用它给的测试数据是对的,求大神指点

#include<stdio.h>intp[11],nums[11];intdp[11][10001];intmain(){inttotal,num;scanf("%d%... #include<stdio.h>
int p[11],nums[11];
int dp[11][10001];
int main()
{
int total,num;
scanf("%d %d",&total,&num);
for(int i=1;i<=num;i++)
scanf("%d %d",&nums[i],&p[i]);
for(int i=1;i<=num;i++)
for(int v=0;v<=total;v++)
{
int max=dp[i-1][v];
for(int j=1;j<=nums[i];j++)
{
if(v<j*p[i])
break;
else
{
if(max<dp[i-1][v-j*p[i]]+j*p[i])
max=dp[i-1][v-j*p[i]]+j*p[i];
}
}
dp[i][v]=max;
}
printf("%d\n",dp[num][total]);
}
展开
 我来答
fly海风123
2013-04-24
知道答主
回答量:13
采纳率:0%
帮助的人:8.1万
展开全部
#include<stdio.h>
#include<string.h>
#define num 100005
int hash[num];
int main()
{
//freopen("input.txt","r",stdin);
int cash,n,i,j,k;
int money_num[11],money[11];
while(scanf("%d%d",&cash,&n)!=EOF)
{
memset(hash,0,sizeof(hash));
for(i=0;i<n;i++)scanf("%d%d",&money_num[i],&money[i]);
hash[0]=1;
for(i=0;i<n;i++)
{
for(j=cash;j>=0;j--)
{
if(hash[j])
{
for(k=1;k<=money_num[i];k++)
{
if((j+k*money[i])>cash)break;
hash[j+k*money[i]]=1;
}
}
}
}
for(i=cash;i>=0;i--)
if(hash[i])
{
printf("%d\n",i);
break;
}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式