买苹果并且节省袋子的问题

版权声明:禁止侵权,打击盗版! https://blog.csdn.net/ChenGX1996/article/details/82944857

小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不会购买。

import java.util.*;

public class Main {
    public static int getNum(int n){
        int temp = -1;
        //要想使得购买尽量少的塑料袋,则金量购买8个每袋的
        //可以构建一个循环,从最大可选择的8个每袋的种类开始,一直到0
        //如果计算结果刚好等于n,则退出循环
        for(int i = n/8;i>=0;i--){//i表示8个每袋的数量,依次递减
            //不是8个每袋的数量若是6的整数倍,则满足
            if((n-i*8)%6 == 0){
                //满足时计算总的袋子数,直接退出
                temp = i+(n-i*8)/6;
                return temp;
            }
        }
        return temp;
    }
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        in.close();
        System.out.print(getNum(n));
    }
}

时间复杂度:O(n)

空间复杂度:O(1)

猜你喜欢

转载自blog.csdn.net/ChenGX1996/article/details/82944857