列表

详情


KS4. 最少数量货物装箱问题

描述

有重量分别为 3,5,7 公斤的三种货物,和一个载重量为 X 公斤的箱子(不考虑体积等其它因素,只计算重量)
需要向箱子内装满X公斤的货物,要求使用的货物个数尽可能少(三种货物数量无限)

数据范围:

输入描述

输入箱子载重量(一个整数)。

输出描述

如果无法装满,输出 -1。
如果可以装满,输出使用货物的总个数。

示例1

输入:

4

输出:

-1

说明:

无法装满

示例2

输入:

8

输出:

2

说明:

使用1个5公斤,1个3公斤货物

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-05-20

#include<stdio.h>
int main()
{
    int i,j,k,x,count=0;
    scanf("%d",&x);
        if(x==1||x==2||x==4)
          printf("-1");
        else {
            count+=x/7;
            if(x%7==0){
                printf("%d",count);
 
            }
            else if(x%7==1||x%7==3||x%7==5)
            {
                count++;
                printf("%d",count);
            }
            else if(x%7==2||x%7==4||x%7==6){
                count+=2;
                printf("%d",count);}
        }
 
 
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-05-16

#include <stdio.h>
int main(){
    int target;
    scanf("%d",&target);
    int array[]={-1,-1,1,-1,1,2,1,2,3,2,3,2,3,2};
    int min;
    if (target<=14){
        printf("%d",array[target-1]);
    }
    else{
        min=(target-7)/7;
        printf("%d",min+array[6+target%7]);
    }
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-02-13

#include<stdio.h>
int main()
{
    int i,j,k,x,count=0;
    scanf("%d",&x);
        if(x==1||x==2||x==4)
          printf("-1");
        else {
            count+=x/7;
            if(x%7==0){
                printf("%d",count);

            }
            else if(x%7==1||x%7==3||x%7==5)
            {
                count++;
                printf("%d",count);
            }
            else if(x%7==2||x%7==4||x%7==6){
                count+=2;
                printf("%d",count);}
        }


    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2019-08-02

#include <stdio.h>
int main(){
    int target;
    scanf("%d",&target);
    int array[]={-1,-1,1,-1,1,2,1,2,3,2,3,2,3,2};
    int min;
    if (target<=14){
        printf("%d",array[target-1]);
    }
    else{
        min=(target-7)/7;
        printf("%d",min+array[6+target%7]);
    }
    return 0;
}
    

C 解法, 执行用时: 2ms, 内存消耗: 380KB, 提交时间: 2020-05-19

#include<stdio.h>
int main()
{
    int i,j,k,x,count=0;
    scanf("%d",&x);
        if(x==1||x==2||x==4)
          printf("-1");
        else {
            count+=x/7;
            if(x%7==0){
                printf("%d",count);
  
            }
            else if(x%7==1||x%7==3||x%7==5)
            {
                count++;
                printf("%d",count);
            }
            else if(x%7==2||x%7==4||x%7==6){
                count+=2;
                printf("%d",count);}
        }
  
  
    return 0;
}

上一题