5664. 放置盒子
有乙個立方體房間,其長度、寬度和高度都等於 n 個單位。請你在房間裡放置 n 個盒子,每個盒子都是乙個單位邊長的立方體。放置規則如下:示例 1:你可以把盒子放在地板上的任何地方。
如果盒子 x 需要放置在盒子 y 的頂部,那麼盒子 y 豎直的四個側面都 必須 與另乙個盒子或牆相鄰。
給你乙個整數 n ,返回接觸地面的盒子的 最少 可能數量。
輸入:n = 3示例 2:輸出:3
解釋:上圖是 3 個盒子的擺放位置。
這些盒子放在房間的一角,對應左側位置。
輸入:n = 4示例 3:輸出:3
解釋:上圖是 3 個盒子的擺放位置。
這些盒子放在房間的一角,對應左側位置。
輸入:n = 10輸出:6
解釋:上圖是 10 個盒子的擺放位置。
這些盒子放在房間的一角,對應後方位置。
1 <= n <= 10e9基本思路:首先,為了地面單元格盡量少,我們應該靠在乙個角落堆積單元格,以使頂部可以放盡量多的單元格。我們可以先寫出幾個例子,容易發現,每層的單元格的個數為(i+1)*i/2;假設有k層,且每一層都填滿,那麼從底部往上,每一層的單元格的個數是,(k+1)*k/2,(k-1)*k)/2,...(1+1)*1/2,據此,我們可以找到對於數字n,滿足條件的大於k層,但是小於k+1層的模型
舉個例子:以第一層的單元格為3為例開始,逐漸增加單元格的情況,其中,每個單元格上的數字,代表層數(該位置上單元格的最多個數)
1 1 -> 1 1 ->1 1 -> 3 2 1對比上圖,我們可以發現, 從下往上,底部每新增乙個單元格時,頂部可以新增的單元格數目從0->k-1個。1 1 2 1 2 1
1 1 1
int minimumboxes(int n)
level--;
int area=(level+1)*level/2;
int add=0;
while(cell
return area;
}
C new的放置語法
include using namespace std struct node int u node int uu 0 u uu cout create endl node u 1000 cout delete n int main node mem 100 node p mem node q ne...
正確放置inline函式
個人感覺用c 寫出的程式再小也小不到 去,不愧是開發大型專案的好手,呵呵。所以用c 寫出的程式一定要有個好的布局,也就是合理的標頭檔案原始檔設定 這是高手說的,哈哈 前幾天,自己在折騰c 的時候遇到了乙個及其鬱悶的事情 程式寫好了,編譯也通過了,可就是鏈結的時候總報找不到那個函式。整整折騰了我一下午...
資料放置的位置
bbs段 未初始化的全域性變數 int g bss 1024 這個大小沒有反應在最後exe的大小上,它只佔執行記憶體空間,不占用檔案空間。data段 初始化過的全域性變數 rodata段 常量資料 的rodata直接和指令編碼一起,故存放在 段中 字串常量,編譯器會自動刪除重複的字串,保證在exe只...