原创 4上三角、下三角、對稱矩陣

說明  上三角矩陣是矩陣在對角線以下的元素均爲0,即Aij = 0,i > j,例如: 1 2 3 4   5 0 6 7 8   9 0 0 10   11 12

原创 學習webkit中 RefPtr PassRefPtr Basics

待續。。。。。。。。。。。。。。。。。。。。。

原创 13 費氏數列或叫斐波那契數列fibonacci

說明:斐波那契數列,又稱黃金分割數列,指的是這樣一個數列:1、1、2、3、5、8、13、21、……            在數學上,斐波納契數列以如下被以遞歸的方法定義:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈

原创 17 約瑟夫排列

說明:據說着名猶太歷史學家 Josephus有過以下的故事:在羅馬人佔領喬塔帕特後,39 個猶太人與Josephus及他的朋友躲到一個洞中,39個猶太人決定寧願死也不要被敵人到,於是決定了 一個自殺方式,41個人排成一個圓圈,由第1個人

原创 10 craps賭博遊戲

說明 一個簡單的賭博遊戲,遊戲規則如下:玩家擲兩個骰子,點數爲1到6,如果第一次點數和爲7或11,則玩家勝,如果點數和爲2、3或12,則玩家輸,如果和 爲其它點數,則記錄第一 次的點數和,然後繼續擲骰,直至點數和等於第一次擲出的點數和,則

原创 8 洗撲克牌(亂數排列)

說明:洗撲克牌的原理其實與亂數排列是相同的,都是將一組數字(例如1 ~N )打亂重新排列,只 不過洗撲克牌多了一個花色判斷的動作而已。  解法:初學者通常會直接想到,隨機產生1~N 的亂數並將之存入陣列中,後來產生的亂數存入陣列 前必須先

原创 19 Shell 排序法 - 改良的插入排序

說明:插入排序法由未排序的後半部前端取出一個值, 插入已排序前半部的適當位置, 概念簡單但速度不快。排序要加快的基本原則之一,是讓後一次的排序進行時,儘量利用前一次排序後的結果,以加 快排序的速度,Shell排序法即是基於此一概念來改良插

原创 14 Eratosthenes 篩選求質數

說明:除了自身之外,無法被其它整數整除的數稱之爲質數,要求質數很簡單,但如何快速的求出質數則一直是程式設計人員與數學家努力的課題, 在這邊介紹一個着名的Eratosthenes求質數方法。   解法:首先知道這個問題可以使用迴圈來求解,將

原创 22 快速排序(1)

說明:快速排序法(quick sort)是目前所公認最快的排序方法之一(視解題的對象而定) ,然雖快速排序法在最差狀況下可以達O(n2 ),但是在多數的情況下,快速排序法的效率表現是相當不 錯的。快速排序法的基本精神是在數列中找出適當的軸

原创 21 改良的選擇排序--堆排序

說明:選擇排序法的概念簡單,每次從未排序部份選一最小值,插入已排序部份的後端,其時間要主 花費於在整個未排序部份尋找最小值, 如果能讓搜尋最小值的方式加快, 選擇排序法的速率也 就可以加快,Heap排序法讓搜尋的路徑由樹根至最後一個樹葉,

原创 24 快速排序法_3

說明之前說過軸的選擇是快速排序法的效率關鍵之一,在這邊的快速排序法的軸選擇方式更加快了快速排序法的效率,它是來自演算法名書 Introduction to Algorithms 之中。  解法先說明這個快速排序法的概念,它以最右邊的值 s

原创 C++程序模板

#include <iostream> #include <iomanip> #include <string> #include <cmath> #include <ctime>   using namespace std;    

原创 5奇數魔方陣

說明  將1 到n( 爲奇數) 的數字排列在nxn的方陣上,且各行、各列與各對角線的和必須相同,如下所 示:   解法  填魔術方陣的方法以奇數最爲簡單,第一個數字放在第一行第一列的正中央,然後向右 ( 左) 上 填,如果右(左)上已

原创 2阿姆斯壯數也叫水仙花數

說明: 在三位的整數中,例如153可以滿足13 + 53 + 33 = 153,這樣的數稱之爲Armstrong數,試寫出一 程式找出所有的三位數Armstrong數。  解法: Armstrong數的尋找,其實就是在問如何將一個數字分解

原创 1蒙特卡洛法求PI

說明:蒙地卡羅爲摩洛哥王國之首都,該國位於法國與義大利國境,以賭博聞名。蒙地卡羅的基本原理爲以亂數配合面積公式來進行解題,這種以機率來解題的方式帶有賭博的意味,雖然 在精確度上有所疑慮,但其解題的思考方向卻是個值得學習的方式。 解法:蒙地