每週一算 一張大餅切n刀,最多可以切多少塊?

2021-09-24 11:05:01 字數 1817 閱讀 8699

這是無意中在乙個錄音中聽到的乙個題目:一張很大很大的餅,給你一把足夠長的刀,切n刀,最多可以得多少塊?

這個問題聽起來很簡單,還是用程式記錄一下吧。

解題:一刀都不切,有1塊餅;

切第一刀,得2塊餅;

切第二刀,這一刀跟原來那一刀有乙個交點,把兩塊再分出兩塊,2+2=4;

切第三刀,為了得到更多,要讓這一刀跟原來兩刀都有交點,4+3=7;

切第四刀,為了得到更多,要讓每一刀都跟之前得刀盡量都有交點,7+4=11;

切第n刀,f(n-1) + n;

**如下:

package com.jandmin.demo.leetcode;

/** * @description: 切大餅最大切法

* 一張大餅切n刀,最多可以切多少塊?

* @author: jandmin

* @create: 2019-06-14 09:06

**/public class cutthepie }}

}/**

* @description: 列印

* @date: 2019/6/14

* @param name

* @param n

* @param total

* @return: void

*/private static void print(string name,int n,int total)

/*** @description: 方式一:一次性切大餅

* @date: 2019/6/14

* @param knife 切得刀數量

* @return: int 得到得答餅塊數量

*/private static int cutpie(int knife)

return cutpie(knife-1) + knife;

}/**

* @description: 方式二:切大餅切一刀

* @date: 2019/6/14

* @param before 切之前得大餅塊數

* @param knife 切的第第幾刀

* @return: int 當前切完的大餅塊數量

*/private static int cutpie(int before,int knife)

}

結果:

方式一切 0 刀最多得到 1 塊餅

方式二切 0 刀最多得到 1 塊餅

方式一切 1 刀最多得到 2 塊餅

方式二切 1 刀最多得到 2 塊餅

方式一切 2 刀最多得到 4 塊餅

方式二切 2 刀最多得到 4 塊餅

方式一切 3 刀最多得到 7 塊餅

方式二切 3 刀最多得到 7 塊餅

方式一切 4 刀最多得到 11 塊餅

方式二切 4 刀最多得到 11 塊餅

方式一切 5 刀最多得到 16 塊餅

方式二切 5 刀最多得到 16 塊餅

方式一切 6 刀最多得到 22 塊餅

方式二切 6 刀最多得到 22 塊餅

方式一切 7 刀最多得到 29 塊餅

方式二切 7 刀最多得到 29 塊餅

方式一切 8 刀最多得到 37 塊餅

方式二切 8 刀最多得到 37 塊餅

方式一切 9 刀最多得到 46 塊餅

方式二切 9 刀最多得到 46 塊餅

方式一切 10 刀最多得到 56 塊餅

方式二切 10 刀最多得到 56 塊餅

每週一演算法 快速排序

public class quicksort 快速排序 public void recquicksort int left,int right public int partitionit int left,int right,long pivot else return leftptr publi...

快速複製一張大表討論

有這樣的一類需求,快速複製一張表,而這張表的資料量又非常的大。比方說本來是分割槽表,要把它重新變成非分割槽表,怎麼能夠快速的完成這樣的操作呢?我下面給出2種大致的方法 第一,就是利用ctas方式來建立一張新錶,當然要想加快速度,在資料庫不是force logging的前提下,可以使用nologgin...

同步一張大表技術實現方案

目錄 1 背景 2 技術方案 3 技術方案修正 3.2 改寫分頁sql 4 參考資料 表中有乙個主鍵字段,主鍵id是有時間特性,按照時間公升序增長的,可以認為id是雪花演算法生成的id,目前表中有1億條資料,我們需要把這1億條資料同步到es中。我們將全表資料看成是乙個大的資料集,從邏輯上進行分頁,每...