网易2017 买苹果

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

输入描述:
输入一个整数n,表示小易想购买n(1 ≤ n ≤ 100)个苹果



输出描述:
输出一个整数表示最少需要购买的袋数,如果不能买恰好n个苹果则输出-1

 

输入例子:
20

 

输出例子:
3




广度优先即可完成,没啥难度
import java.util.Scanner;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {//注意while处理多个case              
            int M = in.nextInt();
              
        Node node = new Node();
        node.val=0;
        node.level=0;
        Queue<Node> queue = new LinkedList<Node>();
        queue.offer(node);
        while(!queue.isEmpty()){
            Node current=queue.poll();
            if (current.val+6 <= M){
                Node tmp = new Node();
                tmp.level = current.level+1;
                tmp.val = current.val + 6;
                if(tmp.val == M){
                    System.out.println(tmp.level);
                    break;
                }
                queue.offer(tmp);
            }
            if (current.val+8 <=M){
                Node tmp = new Node();
                tmp.level = current.level+1;
                tmp.val = current.val + 8;
                if(tmp.val == M){
                    System.out.println(tmp.level);
                    break;
                }
                queue.offer(tmp);
            }
            if(queue.isEmpty()){
            System.out.println(-1);
        }
        }
    }
            
        }
    static class Node{
        public int val;
        public int level;
    }
    }

 




posted on 2016-11-11 11:43  winters86  阅读(244)  评论(0编辑  收藏  举报