洗牌演算法(交換法)

洗牌演算法就是可以產生不重複的亂數的一種演算法,舉例來講如果要產生十個亂數,並且這十個亂數必須是「不重複」的,那很多人的直覺是用rand函式取得一個亂數值以後,存入陣列,並且跟陣列內以有的數字做比對,這種方法簡單是簡單,但是效能很差,而這裡要介紹的洗牌演算法效能跟剛剛講的方法可說是天差地遠,洗牌演算法的原理其實很簡單,就是先在陣列裡存入數字,然後將數字打散 ...

June 5, 2011 · 1 分鐘

【C++】數字翻轉、字串翻轉(應用:轉型別、字串處理、迴圈)

這算是蠻簡單的題目,就只是做數字or字串的翻轉,例如輸入:linroex會輸出:xeornil或是輸入123會傳回321,這題解法並不難,透過C++裡面字串可以用陣列的方式存取這個特性,我們設定一個迴圈,然後取得輸入字串的長度作為迴圈的結束值,接者當迴圈跑一圈時就把X字串最後一個字移到Y字串第一個字,這樣當迴圈跑完時就翻轉完成了 ...

March 6, 2011 · 1 分鐘

【VB】【C++】計算n!(階層)

要計算n的階層是很簡單的一件事,會寫到這個程式是因為排列組合,我想要精確的知道答案會在幾種左右,因此就寫了n!的函數來幫忙求階層的值,所謂的階層就是指從123…..n的意思,而在排列組合中如果要被排列的字有5個字,那麼排列後的結果就最多不超過5432*1的值,也就是最多不超過120個答案 以下我把n!做成Function,有VB版的跟C++版的,剛開始學迴圈的人可以用這個函式來學習迴圈的用法,另外因為擔心integer會存不下資料,所以我使用string來傳回資料,到時候用這個Function時要先把傳回值轉成數字型別才可以 ...

January 5, 2011 · 1 分鐘