程序設(shè)計(jì)基礎(chǔ)w06chap06數(shù)據(jù)組織一遞推思想數(shù)組定義字符數(shù)組part1課件_第1頁(yè)
程序設(shè)計(jì)基礎(chǔ)w06chap06數(shù)據(jù)組織一遞推思想數(shù)組定義字符數(shù)組part1課件_第2頁(yè)
程序設(shè)計(jì)基礎(chǔ)w06chap06數(shù)據(jù)組織一遞推思想數(shù)組定義字符數(shù)組part1課件_第3頁(yè)
程序設(shè)計(jì)基礎(chǔ)w06chap06數(shù)據(jù)組織一遞推思想數(shù)組定義字符數(shù)組part1課件_第4頁(yè)
程序設(shè)計(jì)基礎(chǔ)w06chap06數(shù)據(jù)組織一遞推思想數(shù)組定義字符數(shù)組part1課件_第5頁(yè)
已閱讀5頁(yè),還剩64頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 6 數(shù)據(jù)的組織與處理(一)數(shù)組2014.10.27III-32001 2014.10.271遞推的解題思路數(shù)組的概念、定義和初始化字符數(shù)組、字符串處理篩法的解題思路數(shù)組元素的查找(線性查找與二分查找)數(shù)組排序的思路(冒泡排序法)多維數(shù)組(維以上)學(xué) 習(xí) 目 標(biāo)2遞推的解題思路學(xué) 習(xí) 目 標(biāo)2【任務(wù) 一】A、B、C、D、E 五人合伙夜間捕魚,凌晨時(shí)都疲憊不堪,各自在湖邊的樹叢中找地方睡著了。 日上三竿,A第一個(gè)醒來(lái),他將魚平分作五份,把多余的一條扔回湖中,拿自己的一份回家去了。B第二個(gè)醒來(lái),也將魚平分為五份,扔掉多余的一條,只拿走自己的一份。接著 C、D、E 依次醒來(lái),也都按同樣的辦法分魚。問(wèn)

2、五人至少合伙捕到多少條魚?每個(gè)人醒來(lái)后看到的魚數(shù)是多少條?3【任務(wù) 一】3為了解決上面這種類型的問(wèn)題,需要學(xué)習(xí)和運(yùn)用“遞推”的思想,以及如何使用“數(shù)組”這種數(shù)據(jù)組織的形式來(lái)實(shí)現(xiàn)遞推的過(guò)程。下面先來(lái)介紹“遞推”的算法思想。4為了解決上面這種類型的問(wèn)題,需要學(xué)習(xí)和運(yùn)用“遞推”的思想,以 遞推是計(jì)算機(jī)數(shù)值計(jì)算中的一個(gè)重要算法,可以將復(fù)雜的運(yùn)算化為若干重復(fù)的簡(jiǎn)單運(yùn)算,以便充分發(fā)揮計(jì)算機(jī)長(zhǎng)于重復(fù)處理的特點(diǎn)。通常,使用循環(huán)結(jié)構(gòu)來(lái)實(shí)現(xiàn)重復(fù)處理。解決此類問(wèn)題的關(guān)鍵是:分析簡(jiǎn)單情況,歸納總結(jié)出前后項(xiàng)的關(guān)系(通項(xiàng)公式)。遞 推5 遞推是計(jì)算機(jī)數(shù)值計(jì)算中的一個(gè)重要算法,可以將復(fù)雜的運(yùn)【任務(wù) A】求自然數(shù)n的階乘。任

3、務(wù)分析:令fact(n)表示n的階乘,依據(jù)后項(xiàng)與前項(xiàng)的關(guān)系,可以寫出下面的“遞推”公式:fact(1) = 1 - 起始條件(邊界條件)fact(n) = n * fact(n-1) - 通項(xiàng)公式算法實(shí)現(xiàn):根據(jù)前后項(xiàng)的關(guān)系,顯然,用循環(huán)結(jié)構(gòu)來(lái)實(shí)現(xiàn)這種遞推關(guān)系是非常自然的。請(qǐng)看下面的代碼實(shí)現(xiàn)。6【任務(wù) A】6#include using namespace std;int main()int N;cout please input N (N N;int fact;for (int n=1; n=N; n+)if (n = 1)fact = 1;/ 起始條件elsefact = n * fact;

4、 / fact_n = n * fact_n_1cout fact( N ) = fact endl;return 0;7#include 7【任務(wù) B】王小二自夸刀功不錯(cuò),有人放一張餅在砧板上,問(wèn)他:“餅不許離開砧板,如果切刀,你最多能將餅分成多少塊?”刀刀刀刀8【任務(wù) B】刀刀刀刀8在編程之前要找到規(guī)律分析:令q(n)表示切n刀能分成的塊數(shù)。從前面的圖中可以找出下列關(guān)系: q(1) = 1 + 1 = 2 q(2) = 1 + 1 + 2 = 4 q(3) = 1 + 1 + 2 + 3 = 7 q(4) = 1 + 1 + 2 + 3 + 4 = 11由于要求最多的塊數(shù),所以每刀都是讓每

5、兩條線都有交點(diǎn)。用歸納法不難得到: q(0) = 1 - 初始條件(邊界條件) q(n) = q(n-1) + n - 通項(xiàng)公式9在編程之前要找到規(guī)律9#include using namespace std;int main()int q;for (int n=0; n=100; n+)if (n = 0) / 起始條件q = 1;elseq = n + q; / q_n = n + q_n_1cout q(100) = q endl;return 0;10#include 10數(shù)組是計(jì)算機(jī)語(yǔ)言提供的組織多個(gè)數(shù)據(jù)的一種重要方式:提供了多個(gè)同類型的數(shù)據(jù)(值)在內(nèi)存中連續(xù)存放的工具提供了對(duì)無(wú)限量

6、內(nèi)存單元進(jìn)行高效“命名”的途徑提供了在程序運(yùn)行過(guò)程中動(dòng)態(tài)改變“變量名稱”的手段是一些重要算法思想的實(shí)現(xiàn)基礎(chǔ)數(shù)組11數(shù)組是計(jì)算機(jī)語(yǔ)言提供的組織多個(gè)數(shù)據(jù)的一種重要方式:數(shù)組11類型說(shuō)明符 數(shù)組名常量表達(dá)式 ;TYPE array_nameconst_expr;例:float sheep_weight10;int _a20011000; char student_name20; 說(shuō)明1. 數(shù)組變量的名稱,必須符合語(yǔ)言對(duì)變量命名的要求;2. 用方括號(hào)將常量表達(dá)式括起;3. 常量表達(dá)式定義了數(shù)組元素的個(gè)數(shù);數(shù)組的定義12類型說(shuō)明符 數(shù)組名常量表達(dá)式 ;數(shù)組的定義12注意:在使用VC+6.0進(jìn)行編程時(shí),數(shù)

7、組元素的數(shù)目,要使用常量表達(dá)式,其中不能包含變量例如int n; n = 5;int an;不合法!因?yàn)?n 是變量,不是常量VC+ 6.0:error C2057: expected constant expression13注意:在使用VC+6.0進(jìn)行編程時(shí),數(shù)組元素的數(shù)目,要使用數(shù)組中每個(gè)元素所在的內(nèi)存單元,可以通過(guò)“數(shù)組名位置下標(biāo)”來(lái)訪問(wèn)(賦值、讀取)。數(shù)組元素的位置下標(biāo)從 0 開始計(jì)數(shù)。例如,int a5;定義了一個(gè)含有5個(gè)整數(shù)的數(shù)組,各元素的“變量名稱”分別為:a0, a1, a2, a3, a4是5個(gè)帶下標(biāo)的變量,它們的類型是相同的。該數(shù)組的效果與下面的變量定義相同:int a0

8、, a1, a2, a3, a4;數(shù)組中元素的“名稱”14數(shù)組中每個(gè)元素所在的內(nèi)存單元,可以通過(guò)“數(shù)組名位置下標(biāo)”數(shù)組元素的位置關(guān)系與內(nèi)存地址 a a0 a1 a2 a3 a4說(shuō)明:a0元素的內(nèi)存地址,即&(a0),也被稱為“數(shù)組的地址(元素首地址)”。數(shù)組名與下標(biāo)一起使用時(shí),是一個(gè)變量,表示下標(biāo)值指定位置的元素。數(shù)組名單獨(dú)使用時(shí),表示數(shù)組首地址,是一個(gè)指針常量(也稱常量指針),可賦值給同類型指針。sizeof(a) = sizeof(a0) * number15數(shù)組元素的位置關(guān)系與內(nèi)存地址 a15所有類型均可以用下面的格式來(lái)初始化數(shù)組(變量):type_name array_nameN =

9、v1, v2, . , vN ;其中,v1, v2等表示常量表達(dá)式。例如:int a5 = 3, 5, 4, 1, 2 ;char b5 = c, h, i, n, a ;如果是由字符(char)組成的數(shù)組,則還可以使用:char array_nameN = 各種字符; 例如:char b6 = china; / why 6 ? N必須是字符串長(zhǎng)度+1,其初始化結(jié)果為:b0 = c; b1 = h; ; b4 = a;數(shù)組變量的初始化16所有類型均可以用下面的格式來(lái)初始化數(shù)組(變量):數(shù)組變量的初#include using namespace std;int main() / 在定義時(shí)設(shè)定值

10、,被稱為“變量初始化”char A10 = B, e, i, J, i, n, g; / 一共只給出了7個(gè)字符for (int i=0; i10; i+)cout Ai int(Ai) endl; / 強(qiáng)制類型轉(zhuǎn)換,將字符值轉(zhuǎn)換成整數(shù)值,即其ASCII碼 / 語(yǔ)法格式: dst_type (src_value)return 0; / char_test.cpp閱讀示例代碼1,注意總結(jié)17#include 閱讀示例代碼1,注意總1818#include using namespace std;int main() / 在定義時(shí)設(shè)定值,被稱為“變量初始化”char A10 = BeiJing; /

11、 一共只給出了7個(gè)字符for (int i=0; i10; i+)cout Ai int(Ai) endl; / 強(qiáng)制類型轉(zhuǎn)換,將字符值轉(zhuǎn)換成整數(shù)值,即其ASCII碼 / 語(yǔ)法格式: dst_type (src_value)return 0; / char_test_2.cpp閱讀示例代碼2,注意總結(jié)19#include 閱讀示例代碼2,注意總2020#include using namespace std;int main() / 在定義時(shí)設(shè)定值,被稱為“變量初始化” char A = BeiJing; / 一共給出了7個(gè)字符 int B = 1,2,3,4,5; / 一共給出了5個(gè)整數(shù) f

12、or (int i=0; i10; i+) cout Ai int(Ai); cout Bi endl; return 0; / char_test_3.cpp閱讀示例代碼3,注意總結(jié)21#include 閱讀示例代碼3,注意總2222#include using namespace std;int main() / 在定義時(shí)設(shè)定值,被稱為“變量初始化” charA1 = BeiJing;/ 一共給出了7個(gè)字符 intB1 = 1,2,3,4,5; / 一共給出了5個(gè)整數(shù) cout sizeof(A1) sizeof(A1) endl; cout sizeof(B1) sizeof(B1) e

13、ndl; charA210 = BeiJing;/ 一共給出了7個(gè)字符 intB210 = 1,2,3,4,5;/ 一共給出了5個(gè)整數(shù) cout sizeof(A2) sizeof(A2) endl; cout sizeof(B2) sizeof(B2) endl; return 0; / char_test_4.cpp閱讀示例代碼4,猜猜輸出23#include 閱讀示例代碼4,猜猜輸BeiJing0A124這個(gè)結(jié)尾處的0字符是編譯器自動(dòng)添加的BeiJing0A124這總結(jié)說(shuō)明數(shù)組變量在“初始化”時(shí)(即至少提供了一個(gè)初始值),如果提供的初始值數(shù)目少于數(shù)組元素的個(gè)數(shù),則依下標(biāo)大小順序,從下標(biāo)為

14、0的元素開始,逐一設(shè)定初始值,缺少初始值的數(shù)組元素,將被編譯器自動(dòng)設(shè)置成0。以字符串常量方式對(duì)字符數(shù)組進(jìn)行“初始化”時(shí),也同樣遵循上述規(guī)則。如果初始化時(shí)不設(shè)定數(shù)組大?。ㄔ?cái)?shù)目),則編譯器自動(dòng)根據(jù)初始值的數(shù)目來(lái)設(shè)定數(shù)組的大小。當(dāng)以字符串常量方式對(duì)字符數(shù)組進(jìn)行初始化時(shí),編譯器設(shè)定的數(shù)組大小是:“字符串常量長(zhǎng)度+1”,即不遵循上述規(guī)則!25總結(jié)說(shuō)明數(shù)組變量在“初始化”時(shí)(即至少提供了一個(gè)初始值),如上機(jī)驗(yàn)證26上機(jī)驗(yàn)證26數(shù)組變量的賦值27數(shù)組變量的賦值27程序設(shè)計(jì)基礎(chǔ)w06chap06數(shù)據(jù)組織一遞推思想數(shù)組定義字符數(shù)組part1課件這是一個(gè)偽命題!數(shù)組變量的賦值這是一個(gè)偽命題!數(shù)組變量的賦值所有

15、類型的數(shù)組變量均不可以直接賦值數(shù)組變量的賦值30所有類型的數(shù)組變量數(shù)組變量的賦值30int a5;char b5;a = 1,2,3,4,5; b = CHINA;數(shù)組變量的賦值31int a5;數(shù)組變量的賦值31單獨(dú)一個(gè)一個(gè)進(jìn)行賦值int a5; a0=1; a3=23; 使用for語(yǔ)句,連續(xù)賦值char a5;for (int i=0; i5; i+) ai = A + i;數(shù)組中各元素的賦值32單獨(dú)一個(gè)一個(gè)進(jìn)行賦值數(shù)組中各元素的賦值32使用一些特殊的庫(kù)函數(shù)()使用memset函數(shù),格式為memset(起始地址, 初始值, 空間大小);舉例:memset(sheep, 0, sizeof(

16、sheep);將名為 sheep 的數(shù)組中的全部元素均初始化為 0。調(diào)用此庫(kù)函數(shù)需要加入頭文件 。()使用字符串處理函數(shù),例如: strcpy(字符數(shù)組名,字符串常量或變量);舉例:char school_name20; strcpy(school_name, Tsinghua);數(shù)組中各元素的賦值33使用一些特殊的庫(kù)函數(shù)數(shù)組中各元素的賦值33#includeusing namespace std;int main()char h = 123456;h = abcdef;cout h endl;return 0;程序會(huì)出什么問(wèn)題?Line 6: error: ISO C+ forbids as

17、signment of arrays34#includeLine 6: erro#include using namespace std;int main()char h = 123456;h = “abcef”;cout h endl;return 0;strcpy(h, abcdef);35#include strcpy(h, 通過(guò)cin操作,對(duì)字符數(shù)組變量進(jìn)行“賦值”數(shù)組中各元素的賦值#includeusing namespace std;int main() char h = 123456789; cin h; / 設(shè)鍵入的是 abcdef cout h endl; / 則程序輸出 a

18、bcdef return 0;如果鍵入的是 123456789012345則程序會(huì)輸出什么?36通過(guò)cin操作,對(duì)字符數(shù)組變量進(jìn)行“賦值”數(shù)組中各元素的賦值如果是字符數(shù)組(變量),則cout會(huì)將數(shù)組的所有元素一齊輸出出來(lái),字符之間無(wú)空格。如果是其他類型的元素組成的數(shù)組(變量),則cout只會(huì)輸出該數(shù)組變量的地址,也即數(shù)組第一個(gè)元素所在內(nèi)存單元的地址。cout是如何根據(jù)數(shù)據(jù)類型來(lái)決定輸出方式的呢?這個(gè)問(wèn)題,將在下學(xué)期面向?qū)ο蟪绦蛟O(shè)計(jì)中予以解答。數(shù)組變量的“cout 輸出”37如果是字符數(shù)組(變量),則cout會(huì)將數(shù)組的所有元素一齊輸出#includeusing namespace std;int

19、 main() char h = tsinghua;h0=a; h1=b;h2=4; h3=7; h4=c;cout h endl; int a = 1,2,3,4,5;a0 = 79; a1 = 88;a2 = 34; a3 = 64; a4 = 99;cout a endl; cout &(a0) = &(a0) endl;return 0; 38#include38上述結(jié)果說(shuō)明:數(shù)組a的第一個(gè)元素的地址,與a的值相等。即 cout a; 與 cout &(a0); 等效。39上述結(jié)果說(shuō)明:數(shù)組a的第一個(gè)元素的地址,與a的值相等。39字符數(shù)組(字符串)的應(yīng)用示例“老張開車去東北,撞了! 肇

20、事司機(jī)耍流氓,跑了!” 目擊者對(duì)交警說(shuō):肇事汽車的號(hào)碼為4位完全平方數(shù),且數(shù)字從左到右一個(gè)比一個(gè)大。 請(qǐng)幫交警算出肇事車的號(hào)碼。40字符數(shù)組(字符串)的應(yīng)用示例40#include#includeusing namespace std; void find_it() / . int main()find_it( );return 0;41#include41思路I: 令 n 為車號(hào) n為 4 位數(shù) n = i*i, i = 32, 33, , 99 (31*31=961) 對(duì) i 進(jìn)行枚舉,得不同的 n , 對(duì)每個(gè) n ,檢查 n的各位, 從高位到低位, 是否一個(gè)比一個(gè)大?即,低位的數(shù)值最大。

21、 n n3 n2 n1 n0 n3 n2 n1 n0 42思路I:42void find_it()for (int i=32; i100; i+) int n = i * i;if ( ( (n/1000) (n/100 % 10) ) & ( (n/100 % 10) (n/10 % 10) ) & ( (n/10 % 10) (n % 10) ) ) cout 肇事汽車號(hào)碼為 n endl;四位數(shù)的千位數(shù)字 n3 = n / 1000百位數(shù)字 n2 = n / 100 % 10十位數(shù)字 n1 = n / 10 % 10個(gè)位數(shù)字 n0 = n % 1043void find_it()四位數(shù)的

22、千位數(shù)字 n3 = n 現(xiàn)在,車號(hào)升級(jí)啦!變成了五位!闖禍的車號(hào)居然還是一個(gè)完全平方數(shù)!依然還是從高位到低位一個(gè)比一個(gè)大!(越來(lái)越大)這時(shí),程序該怎么編(或修改)呢?四位數(shù)的千位數(shù)字 n3 = n / 1000百位數(shù)字 n2 = n / 100 % 10十位數(shù)字 n1 = n / 10 % 10個(gè)位數(shù)字 n0 = n % 1044現(xiàn)在,車號(hào)升級(jí)啦!變成了五位!四位數(shù)的千位數(shù)字 n3 = n思路II(還是以四位數(shù)的車號(hào)為例說(shuō)明): 令 n 為車號(hào) n為 4 位數(shù), n = i*i i = 32, 33, , 99 (31*31=961) 枚舉 i 到 n , 查 n 從高位到低位, 是否一個(gè)比一

23、個(gè)小 將 n 分解為 4 個(gè)數(shù)字字符: char *itoa( int value, char *string, int radix) value: 待轉(zhuǎn)換整數(shù)string: 存放轉(zhuǎn)換結(jié)果的字符串指針radix: 2-16進(jìn)制整數(shù)45思路II(還是以四位數(shù)的車號(hào)為例說(shuō)明):45 n= i * i i 3 3 n 1 0 8 9 itoa( n, buf , 10 ); buf 1 0 8 9 0 0 1 2 3 446 #include#includeusing namespace std; int main() char buf5; /定義數(shù)組 int i=0, n=0; /定義整數(shù)變量47

24、#include47for( i=32; i100; i+) / 計(jì)數(shù)循環(huán) n = i*i; / 構(gòu)造4位數(shù)n itoa( n, buf , 10 ); / 把10 進(jìn)制數(shù) n 轉(zhuǎn)換為字符串放入 buf 數(shù)組 if ( (buf0buf1) & / 如果buf中的 (buf1buf2) & / 字符串從左至右 (buf2buf3) ) / 一個(gè)比一個(gè)小cout 肇事汽車號(hào)碼為 / 則輸出 n endl; / _if_ / _for_ return 0; 能把程序改得更簡(jiǎn)潔清晰嗎?48for( i=32; i100; i+) for ( i=32; i100; i+) n = i*i; itoa

25、( n, buf , 10 ); int j; for (j=0; j = bufj+1) break; / 若n符合要求,則FOR循環(huán)會(huì)全部執(zhí)行完!if (j = 3)cout 肇事汽車號(hào)碼為 n endl; / _for_ return 0; 修改后的程序,是不是更簡(jiǎn)潔清晰了?49for ( i=32; i100; i+) for ( i=32; i100; i+) n = i*i; itoa( n, buf , 10 ); int j; for (j=0; j = bufj+1) break; / 若n符合要求,則FOR循環(huán)會(huì)全部執(zhí)行完!if (j = 3)cout 肇事汽車號(hào)碼為 n

26、endl; / _for_ return 0; 想一想:如何把程序改成能解決五位數(shù)(或更多)的車號(hào)呢?50for ( i=32; i100; i+) for ( i=32; i100; i+) n = i*i; itoa( n, buf , 10 ); int j; for (j=0; j = bufj+1) break; / 若n符合要求,則FOR循環(huán)會(huì)全部執(zhí)行完!if (j = 3)cout 肇事汽車號(hào)碼為 n endl; / _for_ return 0; 這些地方需要修改!51for ( i=32; i=1; i-) fishi+1%4 !=0 true fales break; fi

27、shi=1+ fishi+1*5/4; do while( i= 1)定義數(shù)組并初始化輸出計(jì)算結(jié)果57定義數(shù)組并初始化輸出計(jì)算結(jié)果57上圖的說(shuō)明:該圖可分為三部分(1) 是說(shuō)明部分:包含定義數(shù)組 fish6,并初始化為 1 和定義循環(huán)控制變量 i,并初始化為 0。(2) 是 do.while 直到型循環(huán),其循環(huán)體又含兩塊:(2.1) 是枚舉過(guò)程中的 fish5 的初值設(shè)置,一開始 fish5=1+5; 以后每次增 5。(2.2) 是一個(gè) for 循環(huán),i的初值為 4,終值為 1,步長(zhǎng)為 -1,該循環(huán)的循環(huán)體是一個(gè)分支語(yǔ)句,如果 fishi+1不能被 4 整除,則跳出 for 循環(huán)(使用 bre

28、ak 語(yǔ)句;)否則,從 fishi+1 算出fishi。58上圖的說(shuō)明:該圖可分為三部分58當(dāng) break 語(yǔ)句讓程序退出循環(huán)時(shí),意味著某人看到的魚數(shù)不是整數(shù),當(dāng)然不是所求,必須令fish 5 加 5 后再試,即重新進(jìn)入直到型循環(huán) do while 的循環(huán)體。當(dāng)正常退出 for 循環(huán)時(shí),一定是控制變量 i 從初值 4,一步一步執(zhí)行到終值 1,每一步的魚數(shù)均為整數(shù),最后 i = 0,表示計(jì)算完畢,且也達(dá)到了退出直到型循環(huán)的條件。(3) 輸出計(jì)算結(jié)果59當(dāng) break 語(yǔ)句讓程序退出循環(huán)時(shí),意味著某人看到的魚數(shù)#include using namespace std;int main() int

29、fish6=1,1,1,1,1,1; / 記錄每人醒來(lái)后看到的魚數(shù) int i=0; do fish5=fish5+5; / 讓E看到的魚數(shù)增5。 for (i=4; i=1; i-) if ( fishi+1%4 !=0 )break; / 跳出for循環(huán)elsefishi=fishi+1*5/4+1;/ 計(jì)算第i人看到的魚數(shù) while( i=1 ); / 當(dāng) i=1 繼續(xù)做do循環(huán) / 輸出計(jì)算結(jié)果 for (i=1; i=5; i+)cout fishi endl; return 0;60#include 60/*/* 程 序 名:9_.cpp(五人合伙捕魚) */* 作 者:wuwh

30、 */* 編制時(shí)間:2002年10月2日 */* 主要功能:遞推算法的實(shí)現(xiàn) */*#include / 預(yù)編譯命令using namespace std;int main() /主函數(shù) int fish6=1,1,1,1,1,1; / 整型數(shù)組,記錄每人 / 醒來(lái)后看到的魚數(shù) int i=0;61/*do fish5=fish5+5; for (i=4; i=1; i=i-1) if ( fishi+1%4 !=0 ) break; / 跳出for循環(huán) else fishi=fishi+1*5/4+1; while( i=1 ); 6262 初始化E=1 E=E+5 break yes 遞 E

31、 E%4 !=0 D=( E*5/4 )+1 no推 yes D D%4 !=0 方 C= ( D*5/4 )+1 no yes向 C C%4 !=0 B= ( C*5/4 )+1 no yes B B%4 !=0 A= ( B*5/4 )+1 no A 63 初始化E=1 E=E+56331212496199615961276輸出結(jié)果643121輸出結(jié)果64#include using namespace std;int main() int fisher6; / 五個(gè)人看到的魚數(shù) for (int num = 6; ; num += 5) / 對(duì)各種可能性進(jìn)行枚舉 int n; for (n=5; n=1; n-) / 對(duì)五個(gè)人看到的魚數(shù)進(jìn)行遞推 if (n = 5) fishern = num; else / fishern+1 = (fishern - 1) / 5 * 4; if (fishern+1 % 4 != 0) break; / 魚數(shù)num不滿足條件,要嘗試下一個(gè)num,停止遞推 else / 下式所得fishern必然滿足 fishern % 5 = 1 fishern = fishern+1 * 5 / 4 + 1; if (n = 0) / 說(shuō)明魚數(shù)num滿足

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論