藍橋杯-砝碼稱重

/*

5個砝碼

用天平稱重時,咱們但願用盡量少的砝碼組合稱出儘量多的重量。
若是隻有5個砝碼,重量分別是1,3,9,27,81。則它們能夠組合稱出1到121之間任意整數重量(砝碼容許放在左右兩個盤中)。
本題目要求編程實現:對用戶給定的重量,給出砝碼組合方案。
例如:
用戶輸入:
5
程序輸出:
9-3-1
用戶輸入:
19
程序輸出:
27-9+1

要求程序輸出的組合老是大數在前小數在後。
能夠假設用戶的輸入的數字符合範圍1~121。



*/
import java.io.BufferedReader;
import java.io.InputStreamReader;


public class 砝碼稱重 {

    /**
     * @param args
     */
    private static boolean b = true;
    
    private final static int[] array = {1,3,9,27,81}; 
    
    private static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    
    public static String expression(int num){
        int i = 0;
        int next = 0;
        int x = 0;
        int k = 0;
        String str = "";
        boolean bool = true;
        
        for(i=0;i<5;i++){
            if(array[i]==num)
                return num+"";
            else if(array[i]<num);
            else break;
        }
        int n = 0;
        for(int j=0;j<i;j++){
            n = array[j]+n;
        }
        if(num>n){ 
            next = array[i];
            x = next-num;
            b = !b;
        }
        else if(num<n){
            next = array[i-1];
            x = num-next;
        }
        else{
            str = array[i-1]+"";
            for(k=i-2;k>=0;k--){
                if(b){
                str = str+"+"+array[k];
                }
                else{
                    str = str+"-"+array[k];
                }
            }
            return str;
        }
        if(b)
            return next+"+"+expression(x);
        else
            return next+"-"+expression(x);
    }
    
    public static int input()throws Exception{
        String str = in.readLine();
        return Integer.parseInt(str);
    }
    
    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
        int in = input();
        if(in>121||in<1)
            System.out.println("input wrong");
        else{
        String str = expression(in);
        System.out.println(str);
        }
        

    }

}
相關文章
相關標籤/搜索