m0_53989813 2021-08-14 21:56 采纳率: 73.7%
浏览 30
已结题

装箱问题,显示部分正确,程序运行时错误,显示可能是数组越界访问,是哪里不对?

假设有N项物品,大小分别为s1、s2、…、si 、…、sN,其中si为满足1≤si ≤100的整数。要把这些物品装入到容量为100的一批箱子(序号1-N)中。装箱方法是:对每项物品, 顺序扫描箱子,把该物品放入足以能够容下它的第一个箱子中。请写一个程序模拟这种装箱过程,并输出每个物品所在的箱子序号,以及放置全部物品所需的箱子数目。
输入格式:
输入第一行给出物品个数N(≤1000);第二行给出N个正整数s i(1≤s i≤100,表示第i项物品的大小)。
输出格式:
按照输入顺序输出每个物品的大小及其所在的箱子序号,每个物品占1行,最后一行输出所需的箱子数目。


#include<iostream>
using namespace std;
int main(){
    int N,a[100],b[100],m=0;
    cin>>N;
    for(int i=0;i<N;i++)
    {
        cin>>a[i];
        b[i]=0;
    } 
    for(int i=0;i<N;i++)
    {
        for(int j=0;j<N;j++)
        {
            if((100-b[j])>=a[i])
            {
                cout<<a[i]<<" "<<j+1<<endl;
                if(j+1>m) 
                {
                    m=j+1;
                }
                b[j]=b[j]+a[i];
                break;
            }
        
        }
        
    }
    cout<<m;
}

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-08-15 10:31
    关注

    题目要求:物品个数N(≤1000),所以代码里两个数组分别是:a[1000] , b[1000] 。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月23日
  • 已采纳回答 8月15日
  • 创建了问题 8月14日

悬赏问题

  • ¥500 亚马逊 COOKIE我如何才能实现 登录一个亚马逊账户 下发新 COOKIE ..我使用下发新COOKIE 导入ADS 指纹浏览器登录,我把账户密码 修改过后,原来下发新COOKIE 不会失效的方式
  • ¥20 玩游戏gpu和cpu利用率特别低,玩游戏卡顿
  • ¥25 oracle中的正则匹配
  • ¥15 关于#vscode#的问题:把软件卸载不会再出现蓝屏
  • ¥15 vimplus出现的错误
  • ¥15 usb无线网卡转typec口
  • ¥30 怎么使用AVL fire ESE软件自带的优化模式来优化设计Soot和NOx?
  • ¥15 Ubuntu20.04.4.LTS系统如何下载安装VirtualBox虚拟机?
  • ¥15 如何用QDomDocument读取内容为空格的xml数据
  • ¥15 请阅读下面代码,帮我修改下代码