求索未止 2021-11-22 17:08 采纳率: 75%
浏览 46
已结题

c++的背包问题的变形

img


我没用背包的写法,我是想把每个宝石价格从大到小排列然后,用每个食物减去这个宝石价格能最后能0的就输出,排查过程就是先for一次,(食物比宝石价格高的才减)从第一个开始减减去第一个,然后减第二个依次往下到所有宝石结束。如果第一轮不行,然后就从第二个开始开始减,同理然后减第三个依次往下
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
scanf("%d",&t);

for(int i=1;i<=t;i++)
{
    int m[1000];
    int s[1000];
    
    int a,b;
    scanf("%d",&a);
    scanf("%d",&b);
    //马丁 
    for(int q=1;q<=a;q++)
    {
        
        int c;
        scanf("%d",&c);
        m[q]=c;
        
    }
    //食物价格 
    for(int w=1;w<=b;w++)
    {
      
      int d;
      scanf("%d",&d);
      s[w]=d;
          
    }
    
    
    sort(m+1,m+a+1);
    reverse(m+1,m+a+1);

    
    for(int e=1;e<=b;e++)
    {
        int flag=0;
        int jk=s[e];
        
        for(int f=1;f<=a;f++)
        {   
             s[e]=jk;
             
               if(s[e]>=m[f])
            { 
              
             s[e]=s[e]-m[f];
            //printf("%d\n",s[e]);
            if(s[e]==0){flag=1;break;}
            
            }  
             
             
             for(int g=f+1;g<=a;g++)
             {
                
                if(s[e]>m[g]){s[e]=s[e]-m[g];}
                else if(s[e]==m[g]){s[e]=s[e]-m[g];}
                 //printf("%d\n",s[e]);
                if(s[e]==0){flag=1;break;}
                
             }
            
            if(s[e]==0){break;}
             
          }
    
        if(flag==1){printf("yes\n");}
        else{printf("no\n");} 

    }
}

}
现在自己测了很多数据都对但是wa,我想知道问题出现在哪

  • 写回答

2条回答 默认 最新

  • 於黾 2021-11-22 17:19
    关注

    这就是钱币和邮票的问题嘛
    面值10,5,2,1几种钱币,你要用来买东西,那就要遍历然后去匹配啊,不能用贪婪算法的
    一个价值11块的东西就是要10+1,你用10+5无论如何凑不出11来

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月1日
  • 已采纳回答 11月23日
  • 创建了问题 11月22日

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?