[A]週単位数nのナイフをカットパイ、あなたはどのように多くの作品に切ることができますか?

n個のナイフをカットし、あなたはどのように多くの作品まで取得することができ、大きな大きなケーキ、あなたの長いナイフを与えるのに十分:これは記録に耳トピックのですか?

質問は簡単に聞こえる、またはプログラムがそれについて記録します。

解決:ナイフは切断しない、ケーキがあります。

最初の切断刃は、2ケーキを得ました。

第二切断ナイフは、ナイフでナイフが交差する点があることが判明し、次いで分離し、2つの2、2 + 2 = 4。

第三の切断ナイフ、より多くを得るために、元の交差点で二回ナイフの両方を行うために、4 + 3 = 7。

第四の切断ナイフが、より多くを得るために、各ナイフを聞かせは7 + 4 = 11のナイフを与える交差点、前に可能な限り関連しています。

....

ナイフ、F(n-1)のNカット+ N。

コードは以下の通りであります:

package com.jandmin.demo.leetcode;

/**
 * @description: 切大饼最大切法
 *      一张大饼切n刀,最多可以切多少块?
 * @author: JandMin
 * @create: 2019-06-14 09:06
 **/
public class CutThePie {
    public static void main(String[] args) {
        for(int i=0; i<11; i++){

            int total = cutPie(i);
            print("方式一",i,total);
            int num = 1;
            for(int j = 0; j<=i; j++){
                num = cutPie(num,j);
                if(j == i){
                  print("方式二",i,num);
                  break;
                }
            }
        }
    }
    /**
     * @Description: 打印
     * @Date: 2019/6/14
     * @param name
     * @param n
     * @param total
     * @return: void
     */
    private static void print(String name,int n,int total){
        System.out.println(name + "切 " + n + " 刀最多得到 " + total + " 块饼");
    }

    /**
     * @Description: 方式一:一次性切大饼
     * @Date: 2019/6/14
     * @param knife 切得刀数量
     * @return: int 得到得答饼块数量
     */
    private static int cutPie(int knife) {
        if(knife <= 0){
            return 1;
        }
        return cutPie(knife-1) + knife;
    }
    /**
     * @Description: 方式二:切大饼切一刀
     * @Date: 2019/6/14
     * @param before 切之前得大饼块数
     * @param knife 切的第第几刀
     * @return: int 当前切完的大饼块数量
     */
    private static int cutPie(int before,int knife){
        return before + knife;
    }
}

結果:

方法ケーキ放棄する全て0ナイフ
の実施形態2は、ケーキ放棄する0ナイフカット
2個のケーキを与えるまでのすべてのナイフを実施例を
2つのパイの最大与えるために実施形態2つの切断ナイフを
4つのパイまで得るための実施形態を全ての第2のブレードを
実施例2つのカット2ブレードは、4つのパイまで得ることが
7ケーキ与える実施形態すべての3本のナイフを
二つ3本のナイフが最も7ケーキ得る切断実施例
11ケーキ与えるまですべての4枚のブレードの実施形態を
二つの4本のナイフは、ほとんど11ケーキ得る切断の実施形態
の実施例はすべての5カッターアップ16ケーキ与えるために
実施例2つの16円を放棄する5ナイフカット
22ケーキ与えるまでの実施例すべての6本のナイフを
2本の切断6本のナイフは、ほとんど22ケーキ取得実施例
29ケーキ与えるまでのすべての7ナイフの実施の形態を
実施例2は、29を与えるために最大7ナイフを切断しますケーキ
ほとんど37ケーキを取得するための実施形態のすべての8ナイフ
実施例2は、ほとんどの37パイ取得する8ナイフカット
46ケーキ与えるまでのすべての9ナイフの実施形態
の実施例2は、ほとんどの46パイ取得する9ナイフを切断
全10本のナイフ56ケーキ放棄する実施形態
の実施例を2本のナイフ10は、ケーキ56を与えるために切っ

おすすめ

転載: blog.csdn.net/ItRuler/article/details/91949921