首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给予错误的一些价值,尽管逻辑是正确的检查多次。

给予错误的一些价值,尽管逻辑是正确的检查多次。
EN

Stack Overflow用户
提问于 2020-11-21 05:46:03
回答 1查看 63关注 0票数 0

我试图解决这个HackerRank问题:

测试此输入:第一行包含三个空格分隔的整数: b、n和m-预算、键盘型号数和USB驱动器型号数。第二行包含n个空格分隔的整数keyboard[i],每个键盘模型的价格.第三行包含m个空格分隔的整数drives[i],即USB驱动器的价格.

输入:

10 2 3

3 1

5 2 8

它返回产出8,而不是预算10下的9。

代码语言:javascript
复制
 int getMoneySpent(int keyboards_count, int* keyboards, int drives_count, int* drives, int b) {
    int i,j,set_max=0,current=-1;
    for(j=0;j<=drives_count;j++)
    {
        for(i=0;i<=keyboards_count;i++)
        {
        
            if(drives[j]+keyboards[i]>=set_max)
            {
               set_max=drives[j]+keyboards[i];
              if(set_max<=b)
              {
                current=set_max;
              }
            }
        }
    }
    
    return current;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-21 06:09:31

在这里这个很管用。你的逻辑实现有点错误。如果和大于当前和,则需要检查它,而不是set_max以获得最大和作为输出。

代码语言:javascript
复制
int getMoneySpent(int keyboards_count, int* keyboards, int drives_count, int* drives, int b) {
    int i,j,set_max=0,current=-1;
    for(j=0;j<drives_count;j++)
    {
        for(i=0;i<keyboards_count;i++)
        {
        
            if(drives[j]+keyboards[i]>=current)
            {
                set_max=drives[j]+keyboards[i];
              if(set_max<=b)
              {
                  current = set_max;
              }
            }
        }
    }
    
    return current;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64940240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档