第一周 演算法之列舉

2021-10-02 20:31:28 字數 1046 閱讀 3309

列舉:基於逐個嘗試答案的一種問題求解策略

例題一:完美立方

解題思路:

看看n以內有多少四種組合,每個都試一遍

四重迴圈列舉a,b,c,d,a在最外層,d在最裡層,每一層都是從小到大列舉,

a列舉範圍[2,n]

b範圍[2,a-1]

c範圍[b,a-1]

d範圍[c,a-1]

答案

#include

#include

using namespace std;

intmain()

}}}}

return0;

}

例題二:生理週期

思路:從d+1天開始,一直試到第21252天,判斷每一天是否滿足要求(k-p)%23= =0&&(k-e)%28= =0&&(k-i)%33= =0

如何試的更快?

跳著試!

先找第乙個體力高峰,因為兩個體力高峰之間的日子不可能是3個高峰同時出現的日子,因為它絕對不是體力高峰,然後再找體力高峰和智力高峰同時出現的日子出現的日子,同樣在這兩個之間肯定不是三個高峰同時出現的日子,因為它絕不是 體力高峰和智力高峰同時出現的日子

#include

#include

using

namespace std;

#define n 21252

intmain()

return0;

}

例題三:稱硬幣

演算法,第一周

題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1...

Coursera演算法第一周

現在是第三週,剛把第一周做完,要抓緊了。首先是merge sort演算法,採用二分然後遞迴的方法,將時間優化到o nlog n def sort split a,b l a len a l b len b l l a l b l i 0 j 0 for k in range l if i l a a...

演算法訓練第一周

leetcode 283 移動零 基礎寫法 class solution 設定指標i j 遍歷nums i 當nums i 0 即當值不為0時 nums j nums i j int j 0 for int i 0 i i 可以使i j指標同時向右移 只有當nums i 0 j才移動 造成j指標是慢...