1樓:有呼呼
編寫計算斐波那契(fibonacci)數列的第n項函式fib(n)。
斐波那契數列為:0、1、1、2、3、……,即:
fib(0)=0;
fib(1)=1;
fib(n)=fib(n-1)+fib(n-2) (當n>1時)。
寫成遞迴函式有:
int fib(int n)
一個飼養場引進一隻剛出生的新品種兔子,這種兔子從出生的下一個月開始,每月新生一隻兔子,新生的兔子也如此繁殖。如果所有的兔子都不死去,問到第 12 個月時,該飼養場共有兔子多少隻?
分析: 這是一個典型的遞推問題。我們不妨假設第 1 個月時兔子的只數為 u 1 ,第 2 個月時兔子的只數為 u 2 ,第 3 個月時兔子的只數為 u 3 ,……根據題意,“這種兔子從出生的下一個月開始,每月新生一隻兔子”,則有
u 1 = 1 , u 2 = u 1 + u 1 × 1 = 2 , u 3 = u 2 + u 2 × 1 = 4 ,……
根據這個規律,可以歸納出下面的遞推公式:
u n = u n - 1 × 2 (n ≥ 2)
對應 u n 和 u n - 1 ,定義兩個迭代變數 y 和 x ,可將上面的遞推公式轉換成如下迭代關係:
y=x*2
x=y讓計算機對這個迭代關係重複執行 11 次,就可以算出第 12 個月時的兔子數。參考程式如下:
clsx=1
for i=2 to 12
y=x*2
x=ynext i
print y
end分而治之法
1、分治法的基本思想
程式14-6 快速排序
template
void quicksort(t*a, int n)
while (a < pivot);
do while (a[j] > pivot);
if (i >= j) break; // 未發現交換物件
swap(a, a[j]);
} // 設定p i v o t
a[l] = a[j];
a[j] = pivot;
quicksort(a, l, j-1); // 對左段排序
quicksort(a, j+1, r); // 對右段排序
}【問題】 揹包問題
問題描述:有不同價值、不同重量的物品n件,求從這n件物品中選取一部分物品的選擇方案,使選中物品的總重量不超過指定的限制重量,但選中物品的價值之和最大。
#include
void main()
if(s<=m)
for(i=1;i<=n;i=i+1)
for(i=1,s=0;s#includestruct queue;int bestw = 0 ; // 目前的最優值queue* q; // 活結點佇列queue* lq = null ;queue* fq = null ;int add(int w)q->next = null ;q->weight = w ;if(q->next == null)elsereturn 0 ;}
int isempty()
int delete(int&w)void enqueue(int wt, int& bestw, int i, int n) //該函式負責加入活結點else add(wt); // 不是葉子}
int maxloading(int w, int c, int n)while (true) }}
int main()fscanf(in , "%d" , &n) ;fscanf(in , "%d" , &c) ;w = (int*)malloc(sizeof(int)*(n+1)) ;for(i =1 ; i<=n ; i++) fscanf(in , "%d" , &w[i]) ;maxloading(w , c , n) ;fprintf(out , "%d\n" , bestw) ;return 0 ;}
2樓:匿名使用者
poj.org各種有
我是是計算機專業,想問一下學習數學建模到底對程式設計能力或演算法能力有沒有幫助?
3樓:匿名使用者
我之前也是計算機專業的,現在也工作幾年了!就你說的數學到底對程式設計幫助有多大,真的真的不好說,因為工作中真的沒有一到程式設計題,或者演算法是通過某到數學公式解決的,呵呵!據我自己的理解,數學的主要作用是培養人的思維能力,這是潛移默化的,只有你認真學了,好好學了,才能感受到他的作用啊,還是要好好對待學校的基礎課啊,像編譯原理,微機原理,甚至彙編這些,其實工作以後很少會用到,但是還得好好學,他們培養的是你的計算機思維!
真正實用的,工作中用的,你工作以後再學都不晚,學校還是好好把基礎課學好,剛畢業找工作,沒人會問你關於專案啊,實際怎麼用的問題的,就是大公司面試應屆生,也是面試你們課本上的!
4樓:匿名使用者
一件事,用數學的語言表達出來,就是數學建模。一般來說,只能在數學模型建立後,才轉化成計算機語言。
5樓:聲
非常有用,但不常用!
演算法與程式設計有什麼關係?
6樓:查志強
演算法的定義
演算法(algorithm)是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。
不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間複雜度與時間複雜度來衡量。 一個演算法應該具有以下五個重要的特徵:
演算法可以使用自然語言、偽**、流程圖等多種不同的方法來描述。
1、有窮性(finiteness)
演算法的有窮性是指演算法必須能在執行有限個步驟之後終止
2、確切性(difiniteness)
演算法的每一步驟必須有確切的定義;
3、輸入項(input)
一個演算法有0個或多個輸入,以刻畫運算物件的初始情況,所謂0個輸入是指演算法本身定出了初始條件;
4、輸出項(output)
一個演算法有一個或多個輸出,以反映對輸入資料加工後的結果。沒有輸出的演算法是毫無意義的;
5、可行性(effectiveness)
演算法中執行的任何計算步都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成。(也稱之為有效性) 電腦科學家尼克勞斯-沃思曾著過一本著名的書《資料結構十演算法= 程式》,可見演算法在電腦科學界與計算機應用界的地位。
程式設計就是讓計算機為解決某個問題而使用某種程式設計語言編寫程式**,並最終得到結果的過程。為了使計算機能夠理解人的意圖,人類就必須要將需解決的問題的思路、方法、和手段通過計算機能夠理解的形式告訴計算機,使得計算機能夠根據人的指令一步一步去工作,完成某種特定的任務。這種人和計算機之間交流的過程就是程式設計。
做演算法的對程式設計要求有多高
如何學習程式設計演算法,如何學習程式設計,從什麼幾乎開始學?
演算法和數學沒那麼大關係的。你去看專門的演算法書去了解一下,這個要根據樓主你的變成語言基礎了。樓主學過c或者c 沒?推薦演算法導論這本書,基本上常見問題的演算法這上面都有 演算法與資料結構 是大學計算機學科必須的一門課程。總的來說,在大學課程中,還是比較具有難度的。演算法和數學的關係是很大的,不像樓...
程式設計演算法資料結構如何理解
演算法 資料結構 程式 是一個著名的公式。程式執行的過程就是資料流的處理過程,怎麼處理,那就是演算法問題,資料怎麼組織,那就是資料結構了。程式設計是給出解決特定問題程式的過程,是軟體構造活動中的重要組成部分。程式設計往往以某種程式設計語言為工具,給出這種語言下的程式。程式執行的過程就是資料流的處理過...
精通C 與熟悉VC ,演算法不怎樣 學遊戲程式設計如何開始
學習下 資料結構和演算法 這個主要 c 一定要好 書一定要看經典的 垃圾書真的害人 我剛開始時候就是看啦個c 垃圾書 我以為c 就那麼點。原來竟是說啦些語法而已 書盡量找國外人寫的 英文不行 就看翻譯版。國人寫的書 真是。c primer 3版的不錯 早就出第四版啦 聽說翻譯的不怎麼樣 我朋友建議我買...