yugumarck 2019-04-20 13:31 采纳率: 0%
浏览 412

C语言装载问题,想知道哪里错了?

自己找不到错误的用例,想请大佬指教一下错了哪些特殊用例?图片说明

图片说明

#include<stdio.h>
int max(int x,int y);
void find(int v0,int x);
int m,n;
int flag=0;
int dp[1050][1050]={ {0} };
int w[1050],v[1050];
int main()
{
    int i,j;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    scanf("%d,%d",&w[i],&v[i]);
    scanf("%d",&m);
    for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
    {
        if (w[i]>j)
        dp[i][j]=dp[i-1][j];
        else
        dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);
    }
    int value=dp[n][m];
    find(value,1);
}
void find(int v0,int x)
{
    int i,j,vi;
    for(i=x;i<=n;i++)
    {
        x++;
        if(v0>=0&&v[i]!=0)
        {
            v0=v0-v[i];
            vi=v[i];
            v[i]=0;
            if(v0==0)
            {
                flag++;
                printf("case %d:\n",flag);
                for(j=1;j<=n;j++)
                if(v[j]==0)
                printf("%d\n",j);
            }
            if(v0>=0)
            find(v0,x);
            v[i]=vi;
            v0=v0+v[i];
        }
    }
}
int max(int x,int y)
{
    if(x>y)
    return x;
    else
    return y;
}
  • 写回答

1条回答 默认 最新

  • yugumarck 2019-04-20 14:35
    关注

    用计算器的随机数发射器发射了20组用例测了一下过了。。。原因其实很简单,动态规划之后我默认输出的答案的重量之和比MAX小了,其实不然。
    加了几行限制重量的代码之后成功过了。
    自己基础还是不够扎实,这么简单的错误早该想到的

    评论

报告相同问题?

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表