基础实验2-2.4 装箱问题 (20分)

假设有N项物品,大小分别为s?1??、s?2??、…、s?i??、…、s?N??,其中s?i??为满足1的整数。要把这些物品装入到容量为100的一批箱子(序号1-N)中。装箱方法是:对每项物品, 顺序扫描箱子,把该物品放入足以能够容下它的第一个箱子中。请写一个程序模拟这种装箱过程,并输出每个物品所在的箱子序号,以及放置全部物品所需的箱子数目。

输入格式:

输入第一行给出物品个数N(≤);第二行给出N个正整数s?i??(1,表示第i项物品的大小)。

输出格式:

按照输入顺序输出每个物品的大小及其所在的箱子序号,每个物品占1行,最后一行输出所需的箱子数目。

输入样例:

8
60 70 80 90 30 40 10 20

输出样例:

60 1
70 2
80 3
90 4
30 1
40 5
10 1
20 2
5

代码:
#include <stdio.h>

int main() {
    int n,d,s[1000] = {100},c = 0,j;
    scanf("%d",&n);
    for(int i = 0;i < n;i ++) {
        scanf("%d",&d);
        for(j = 0;j <= c;j ++) {
            if(s[j] >= d) {
                printf("%d %d\n",d,j + 1);
                s[j] -= d;
                break;
            }
        }
        if(j > c) {
            s[++ c] = 100 - d;
            printf("%d %d\n",d,c + 1);
        }
    }
    printf("%d",c + 1);
}

原文地址:https://www.cnblogs.com/8023spz/p/12303426.html

时间: 2024-11-04 13:30:53

基础实验2-2.4 装箱问题 (20分)的相关文章

实验11-2-5-链表 链表拼接 (20 分)

懒得放题目了,直接上答案,太难做了 struct ListNode* mergelists(struct ListNode* list1, struct ListNode* list2) { struct ListNode* head, * tmp, * t; head = (struct ListNode)malloc(sizeof(struct ListNode)); head->next = list1; tmp = head; if (list1 == NULL && lis

基础实验4-2.6 目录树 (30分)- 建树+先序遍历

解题思路:采用将多叉树转化为二叉树的方法(即利用孩子兄弟的结点结构)建立二叉树,最后再先序遍历输出即可 #include <stdio.h> #include <malloc.h> #include <string.h> struct TNode { int space;//记录打印空格数 int prior;//标记是文件还是目录,文件优先级0,目录优先级1(优先级大的优先) char name[261];//文件名 struct TNode *son,*sib;//

基础实验1(单臂路由及利用路由器开启DHCP自动分配IP地址)

实验环境:PT 6.2 两台PC:PC1/PC2  一台cisco 2960交换机 一台2620路由器 实验目的:让PC1/PC2属于不同的VLAN,且相互通信.同时自动获取各自网段IP地址. 1.进入2960的配置模式,划分不同的vlan并将PC1/PC2划入不同的网段.并将连通路由器端口转为干道协议. 代码如下: >en #conf t config)#vlan 10 config)#vlan 20 config)#int f0/21 config)#switchport ac vlan 1

[ZigBee] 4、ZigBee基础实验——中断

前言 上一篇介绍了CC2530的IO的基础知识,并用LED的控制来展示如何配置并控制GPIO的输出,用KEY状态的读取实验来展示如何读取GPIO的状态.从上一节的KEY状态读取的代码看出是采用轮训方式的,这种方式是很浪费资源,本节将介绍一种中断方式来替换轮训的方案. 一.中断 电路依然没变,若要使用CC2530的外部中断需要使用P0IEN.PICTL.P0IFG.INE1寄存器. 按键中断初始设置为: 1 /********************************************

WLGK-51单片机接口技术基础实验 ——LED闪烁灯

WLGK-51单片机接口技术基础实验-LED闪烁灯 当我们开始接触单片机,首先接触的第一个实验就是LED灯的使用,类似于我们学习软件开始接触的第一个程序"HelloWorld",这个实验是带领我们走入"软硬件综合使用"的一个很好入门示例,51单片机是他的一个载体.下面小伙伴们,让我们一起来揭开LED的神秘面纱吧! 万立高科官网:www.wanligaoke.com 万立高科官方商城:http://www.wlgkbj.com 万立高科淘宝直销店铺:https://r

[ZigBee] 6、ZigBee基础实验——定时器3和定时器4(8 位定时器)

上一节讲了16位定时器1,本节讲8位定时器3和定时器4! 1.综述 Timer 3 and Timer 4 are two 8-bit timers(8位定时器). Each timer has two independent capture/compare channels(独立的捕获/比较通道),each using one I/O pin per channel. Features: · Two capture/compare channels· Set, clear or toggle

[nRF51822] 12、基础实验代码解析大全 &#183; 实验19 - PWM

一.PWM概述: PWM(Pulse Width Modulation):脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形. PWM 的几个基本概念: 1) 占空比:占空比是指在一个周期内,信号处于高电平的时间占整个信号周期的百分比,方波的占空比是50%. 2) 调制频率:周期的倒数. 3) 脉冲宽度:信号处于高电平的时间. 二.nRF51822的PWM产生: NRF51822 通过Timer.PPI 和GPIOTE 的配合实现PWM 的功能,由Timer 产生一个事件,

[nRF51822] 11、基础实验代码解析大全 &#183; 实验16 - 内部FLASH读写

 一.实验内容: 通过串口发送单个字符到NRF51822,NRF51822 接收到字符后将其写入到FLASH 的最后一页,之后将其读出并通过串口打印出数据. 二.nRF51822芯片内部flash知识: EN-nRF51D 开发板使用NRF51822 芯片为nRF51822-QFAA,如下图所示,共有256KBFLASH,256 页,页大小为1024 字节. NRF51822 内部FLASH 写流程如下: 三.代码解析: main: 1 int main(void) 2 { 3 ... 4 5

[ZigBee] 5、ZigBee基础实验——图文与代码详解定时器1(16位定时器)(长文)

1.定时器1概述 定时器1 是一个支持典型的定时/计数功能的独立16 位定时器,支持输入捕获,输出比较和PWM等功能.定时器有五个独立的捕获/比较通道.每个通道定时器要使用一个I/O 引脚.定时器用于范围广泛的控制和测量应用,可用的五个通道的正计数/倒计数模式将允许诸如电机控制应用的实现. 定时器1 的功能如下: • 五个捕获/比较通道• 上升沿.下降沿或任何边沿的输入捕获• 设置.清除或切换输出比较• 自由运行.模或正计数/倒计数操作• 可被1,8,32 或128 整除的时钟分频器• 在每个捕