李白のJava問題解決

偉大な詩人李白は一生美味しい飲み物を飲んでいると言われています。幸いなことに、彼は決して運転しません。
ある日、彼はヒップフラスコを持って家を出ました。フラスコには2つのバケツのワインがありました。彼は
歩きながら歌った:何事もなく通り歩き、鍋を手に取って飲む。
すべての店で2倍になり、花に出会ったらバケツを飲みます。
途中、お店に5回出会って10回過ごしました。最後に出会ったのは花だと知って、ワインを飲みました。
李白とお店と花との出会いの順番を計算してください。お店との出会いをa、花との出会いをbとして記録できます。次に:babaabbabbabbbbは妥当な順序です。
このような答えは全部でいくつありますか?考えられるすべての解決策(タイトルで示されたものを含む)の数を計算してください。

public class T2172 {
    
    
    static int count=0;
    public static void main(String[] args) {
    
    
        Order(2,0,0);
        System.out.println(count);
    }

    public static void Order(int wine,int a,int b){
    
    
        if (wine == 0 && a ==5 && b==10){
    
    
            count++;
        }
        if (a > 5 || b>10){
    
    
            return;
        }
        if ((a<5&&wine<=0) || (b<10&&wine<=0)){
    
    
            return;
        }
        Order(wine*2,a+1,b);
        Order(wine-1,a,b+1);
    }
}

判断aまたはbが15回であるかどうかを考慮すると、ワインは同時に計算する必要があります。したがって、再帰の実装は比較的簡単です。再帰の場合、最も重要なことは、最終的な戻り条件に再帰することです。合計3つのif判定文があり、注意が必要です。

おすすめ

転載: blog.csdn.net/m0_48036171/article/details/114235299