leetcode 1553 吃掉n個橘子的最少天數
題目大意:
題解:
三條結論
在任意一次操作\(2\)之前最多隻會有\(1\)次操作\(1\);
在任意一次操作\(3\)之前最多隻會有\(2\)次操作\(1\);
除了最後的一次操作\(1\)之外,其餘連續的操作\(1\)之後都會有操作\(2\)或\(3\)。
通過記憶化搜尋實現上述三條結論:
\[f(i) = i \% 2 + 1 + f(\lfloor i/2 \rfloor)
\]\[f(i) = i \% 3 + 1 + f(\lfloor i/3 \rfloor)
\]\[f(1) = 1
\]
class solution
if (hashtable.count(n))
return hashtable[n] = min(n % 2 + 1 + mindays(n / 2), n % 3 + 1 + mindays(n / 3));}};
我們也可以將思路抽象成乙個最短路問題,即:
因此我們可以用\(dijkstra\)演算法求出答案。
using pii = pair;
class solution
visited.insert(node);
if (node == 1)
q.emplace(days + 1 + node % 2, node / 2);
q.emplace(days + 1 + node % 3, node / 3);
}return ans;}};
LeetCode 回溯 N皇后
n 皇后問題研究的是如何將 n 個皇后放置在 n n 的棋盤上,並且使皇后彼此之間不能相互攻擊。上圖為 8 皇后問題的一種解法。給定乙個整數 n,返回所有不同的 n 皇后問題的解決方案。每一種解法包含乙個明確的 n 皇后問題的棋子放置方案,該方案中 q 和 分別代表了皇后和空位。示例 輸入 4 輸出...
LeetCode演算法 N皇后 N皇后II
n皇后問題研究的是如何將 n?個皇后放置在 n n 的棋盤上,並且使皇后彼此之間不能相互攻擊。給定乙個整數 n,返回所有不同的?n?皇后問題的解決方案。每一種解法包含乙個明確的?n 皇后問題的棋子放置方案,該方案中 q 和 分別代表了皇后和空位。示例 輸入 4 輸出 q 解法 1 q q q.q.解...
leetcode 319 N個人開關N盞燈
初始時有 n 個燈泡關閉。第 1 輪,你開啟所有的燈泡。第 2 輪,每兩個燈泡你關閉一次。第 3 輪,每三個燈泡切換一次開關 如果關閉則開啟,如果開啟則關閉 第 i 輪,每 i 個燈泡切換一次開關。對於第 n 輪,你只切換最後乙個燈泡的開關。找出 n 輪後有多少個亮著的燈泡。示例 輸入 3輸出 1解...