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日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改