#include<iostream>
using namespace std;
//一开始想错了,总是在考虑相邻箱子的合 然后再去分情况,但实际上每次都遍历已经存在的箱子的大小即可。
int main()
{
int n;
cin >> n;
int *goodsWeight = new int[n];
for(int i = 0;i < n;i++)
cin >> goodsWeight[i];
int *boxIndex = new int[n];
int *boxSize = new int[n];
int numBox = 0;
for(int i = 0;i < n;i++)
boxSize[i] = 100;
for(int j = 0;j < n;j++)
{
for(int i = 0;i <= j;i ++)//等于j
if(boxSize[i] >= goodsWeight[j])
{
if(boxSize[i] == 100) // 数箱子的数目是个问题
numBox ++;
boxIndex[j] = i;
boxSize[i] -= goodsWeight[j];
break;
}
}
for(int i = 0;i < n;i++)
cout<<goodsWeight[i]<<" "<<boxIndex[i] + 1<<endl;
cout<<numBox <<endl;
return 0;
}
2-09推箱子模拟
最新推荐文章于 2023-02-14 15:44:26 发布