把只包含質因子2、3和5的數稱作醜數(ugly number)。例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。
思路1:從1開始遞增,依次判斷每個數是否是醜數,不夠高效;
思路2:思路1之所以效率低,比較關鍵的一點是遍歷的每乙個數字都進行醜數判斷。思路2不是去判斷醜數,而是計算出醜數:因為每個醜數都可以看成是由1去乘以2、3、5,再乘以2、3、5而衍生出來的。可以用三個指標指向第乙個醜數1,三個指標分別表示乘2,乘3,乘5,將三個指標計算出來的最小的醜數放在陣列中,並將該指標向後移動乙個位置。為了得到第1500個醜數,需要乙個長度1500的陣列來記錄已經計算出來的醜數。因此這個思路也可以說是用空間換時間。
**:
class
solution
int res = ugly[index -1]
;delete
ugly;
return res;}}
;
小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100(至少包括兩個數)。沒多久,他就得到另一組連續正數和為100的序列:18,19,20,21,22。現在把問題交給你,你能不能也很快的找出所有和為s的連續正數序列? good luck!
輸出描述:
輸出所有和為s的連續正數序列。序列內按照從小至大的順序,序列間按照開始數字從小到大的順序
思路:
1、雙指標技術,就是相當於有乙個視窗,視窗的左右兩邊就是兩個指標
2、根據視窗內值之和來確定視窗的位置和寬度。
**:
class
solution
res.
push_back
(v);
begin ++;}
//如果當前視窗內的值之和小於sum,那麼右邊視窗右移一下
else
if(cursum < sum)
end ++
;//如果當前視窗內的值之和大於sum,那麼左邊視窗右移一下
else
begin ++;}
return res;}}
;
窮舉問題 搬磚
拼題a 問題描述 某工地需要搬運磚塊,已知男人一人搬3塊,女人一人搬2塊,小孩兩人搬1塊。如果想用n人正好搬n塊磚,問有多少種搬法?輸入格式 輸入在一行中給出乙個正整數n。輸出格式 輸出在每一行顯示一種方案,按照 men cnt m,women cnt w,child cnt c 的格式,輸出男人的...
窮舉問題 搬磚
某工地需要搬運磚塊,已知男人一人搬3塊,女人一人搬2塊,小孩兩人搬1塊。如果想用n人正好搬n塊磚,問有多少種搬法?輸入在一行中給出乙個正整數n。輸出在每一行顯示一種方案,按照 men cnt m,women cnt w,child cnt c 的格式,輸出男人的數量cnt m,女人的數量cnt w,...
窮舉法解決組合問題
在下面的加法算式中,不同的符號代表不同的數字,相同的符號代表相同的數字。請設計程式求出 都 要 學 c 4個符號分別代表的數字。cpp view plain copy print?h k h j k h i j k h 2 0 0 8 都 要 學 c 4個符號分別代表的數字 從0到 9 然後進行組合...