演算法設計與分析第一二章習題

2021-10-03 11:43:14 字數 1689 閱讀 8211

#include

#include

using

namespace std;

bool

solve

(int a,

int n,

int&x)}if

(i==n) cout<<

"no"

}

將出現的元素存入陣列中,進行比較

#include

#include

#include

using

namespace std;

bool

solve

(int a,

int n)

return

false

;}

解答:

對於乙個採用字元陣列存放的字串str,設計乙個遞迴演算法判斷str是否為回文。

設 f(str,n)返回含n個字元的字串str是否為回文,其遞迴模型如下:

f(str,n)=true 當 n=0 或者 n=1 時

f(str,n)=flase 當 str[0]≠str[n-1]時

f(str,n)=f(str+1, n-2) 其他情況

對應的遞迴演算法如下:

#include

#include

bool

ispal

(char

*str,

int n)

//str 回文判斷演算法

void

disp

(char

*str)

intmain()

解:設f(str)返回字串字元個數,其遞迴模型為:

f(str)=0 當*str==』\0』時;

f(str)=f(str++) +1 其他情況

演算法:

#include

#include

using

namespace std;

intstrlength

(char

*str)

intmain()

解:設f(l)返回鍊錶型別,其遞迴模型為:

f(l)=null 當l為空時

f(l)=f(l->next) 其他情況 ,先遞迴再列印

演算法:

#incldue

using

namespace std;

typedef

struct lnodelnode,

*linklist;

linklist function

(linklist &l)

}

解:設f(l)返回鍊錶型別,其遞迴模型為:

f(l)=l 當l->next為空時

f(l)=max 當l->datadata時

f(l)=l 其他情況

演算法:

#incldue

using

namespace std;

typedef

struct lnodelnode,

*linklist;

linklist function

(linklist &l)

}

第一 二章課後習題

第一章 問答題 1.linux 採用什麼版權方式發行?這種版權與通常的商業軟體有何區別?答 linux是採用 gpl版權方式發行的,它和通常的商業軟體的最大區別是開放源 2.簡述 linux 的技術特點。答 1 成本低廉,完全開放源 2 對硬體的要求不高,支援硬體的種類多 3 支援多種不同格式的檔案...

演算法設計與分析習題

證明 令 f n o f 則存在自然數n1,c1,使得對任意的自然數n n1,有 f n c1f n 同理令 g n o g 則存在自然數n2,c2,使得對任意的自然數n n2,有 g n c2g n 令c3 max,n3 max,則對所有的n n3,有 f n c1f n c3f n g n c2...

演算法設計與分析 第一章演算法概論

可由乙個給定計算模型機械地執行的規則或計算步驟序列稱為該計算模型的乙個計算 演算法是滿足下列條件的計算 輸出 滿足給定約束條件地結果 演算法的目的是求解問題 乙個演算法面向乙個問題,而不是僅求解乙個問題的乙個或幾個例項 偽 例項 input a 1,n n個數 output a 1,n n個sort...