版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、軟件綜合課程設(shè)計軟件綜合課程設(shè)計 算術(shù)表達式的求解&車廂調(diào)度 二一四 年 六 月目錄算數(shù)表達式的求解3一、前言3二、問題陳述3三、需求分析3四、 概要設(shè)計4五、詳細設(shè)計和編碼6六、上級調(diào)試過程10七、總結(jié)與心得12八、參考文獻13附錄(源程序):13車廂調(diào)度20一、 問題陳述20二、 問題分析與設(shè)計20三、 運行結(jié)果20四、設(shè)計體會與總結(jié)21附錄(源程序)21算數(shù)表達式的求解一、前言表達式計算是實現(xiàn)程序設(shè)計語言的基本問題之一,也是棧的應(yīng)用的一個典型例子。設(shè)計一個程序,演示用算符優(yōu)先法對算術(shù)表達式求值的過程。在計算機中,算術(shù)表達式由常量、變量、運算符和括號組成。由于不同的運算符具有不同的優(yōu)先級,
2、又要考慮括號,因此,算術(shù)表達式的求值不可能嚴格地從左到右進行。因而在程序設(shè)計時,借助棧實現(xiàn)。算法輸入:一個算術(shù)表達式,由常量、變量、運算符和括號組成(以字符串形式輸入)。為簡化,規(guī)定操作數(shù)只能為正整數(shù),操作符為+、-*、/,用#表示結(jié)束。算法輸出:表達式運算結(jié)果。算法要點:設(shè)置運算符棧和操作數(shù)棧輔助分析算符優(yōu)先關(guān)系。在讀入表達式的字符序列的同時,完成運算符和運算數(shù)的識別處理,以及相應(yīng)運算。二、問題陳述(算數(shù)表達式的求解)給定一個算數(shù)表達式,通過程序求出最后的結(jié)果。 要求如下: 1、從鍵盤輸入要求解的算術(shù)表達式; 2、采用棧結(jié)構(gòu)進行算數(shù)表達式的求解過程; 3、能夠判斷算數(shù)表達式的正確與否; 4、
3、對于錯誤表達式給出提示; 5、對于正確表達時給出最后的結(jié)果。三、需求分析有題目可知,程序要求給定一算數(shù)表達式并計算最后的結(jié)果,我們知道,在高級語言中,任何一個表達式都是有操作數(shù)、運算符和界限符組成。在計算過程中,還要考慮表達式中有無括號以及左右括號之分。由于運算符有優(yōu)先級的高低,因此一個算數(shù)表達是不可能總是按順序執(zhí)行。 通過以上可知,可以用棧來實現(xiàn)運算符的優(yōu)先級完成算術(shù)表達式的求解。為實現(xiàn)算法的優(yōu)先級,設(shè)置兩個棧:一個稱為操作數(shù)棧opnd,用以寄存操作數(shù)和運算結(jié)果,另一個為操作符棧optr,用以寄存運算符。該算法的基本思想是:(1) 首先置操作數(shù)棧opnd為空棧,表達式結(jié)束符“#”為操作符棧o
4、ptr的棧底元素。(2)依次讀入表達式中每個字符,若為操作數(shù),則進opnd棧;若是運算符,則與optr棧的棧頂運算符比較優(yōu)先級后做相應(yīng)操作:若當前操作符大于optr棧的棧頂,則當前操作符入棧;否則,opnd棧的棧頂元素、次棧頂元素出棧,同時optr棧的棧頂元素也出棧,形成運算,并將結(jié)果壓入opnd棧,直至整個表達式求值完畢(即optr棧的棧頂元素和當前讀入的字符均為“#”)。對于算術(shù)表達式的輸入,本程序采用gets()的方法讀入,將運算符+,-,*,/,(,),#存儲在數(shù)組中時,定義表達式求解函數(shù),在函數(shù)中判斷讀入的字符,如果是運算符,將這些字符入操作符optr棧,并比較優(yōu)先級,判斷是否運算。
5、若讀入的字符為0到9之間的數(shù)字時,用字符相減轉(zhuǎn)化為整型,然后將轉(zhuǎn)化后的整型再轉(zhuǎn)化為ASCII的形式壓入操作數(shù)棧opnd中。4、 概要設(shè)計 1、存儲結(jié)構(gòu)設(shè)計本程序主要采用順序棧結(jié)構(gòu)類型(Stack)來存儲表達式計算中的數(shù)據(jù)。程序中需要建立兩個棧,一個棧用于寄存運算符,另一個則用于寄存操作數(shù)和計算結(jié)果,故需要建立兩個順序棧結(jié)構(gòu)類型。何一個表達式都是由操作符,運算符和界限符組成的。我們分別用順序棧來寄存表達式的操作數(shù)和運算符。棧是限定于緊僅在表尾進行插入或刪除操作的線性表。順序棧的存儲結(jié)構(gòu)是利用一組連續(xù)的存儲單元依次存放自棧底到棧頂?shù)臄?shù)據(jù)元素,同時附設(shè)指針top指示棧頂元素在順序棧中的位置,base
6、為棧底指針,在順序棧中,它始終指向棧底,即top=base可作為棧空的標記,每當插入新的棧頂元素時,指針top增1,刪除棧頂元素時,指針top減1。 2、算數(shù)優(yōu)先級設(shè)計 對一任意的表達式,由于表達式中運算符的優(yōu)先級不同,可能會使表達式不按順序進行計算。在本程序中定義函數(shù)Proceed()來比較運算符的優(yōu)先級,而函數(shù)中各優(yōu)先級的比較主要根據(jù)以下優(yōu)先級比較的表格:表1:運算符優(yōu)先級運算符+-*/()#用數(shù)字表示0123456棧內(nèi)操作符的優(yōu)先級3355160棧外操作符的優(yōu)先級2244610 在Precede()函數(shù)中定義兩個字符型參數(shù)變量op和c,其中op表示棧頂運算符,c表示當前讀入運算符,對于當
7、前運算符是否入棧,進行如下操作:比較當前運算符和棧頂運算符的優(yōu)先級的大小: 1、如果當前運算符的優(yōu)先級大于棧頂運算符的優(yōu)先級,即opc;令函數(shù)返回值為c;令函數(shù)返回值為,此時應(yīng)將棧頂運算符出棧和棧頂、次棧頂操作數(shù)出棧并進行相應(yīng)的運算。 3、如果當前元素的優(yōu)先級等于棧頂運算符的優(yōu)先級,即op=c;令函數(shù)的返回值為=,此時界限符內(nèi)的表達式已計算完畢。 3、ADT描述ADT Stack數(shù)據(jù)對象:D= |ElemSet,i=1,2,,n, n0數(shù)據(jù)對象:R1=|,i=2,,n約定端為棧頂,端為棧底?;静僮鳎?InitStack(&S) 操作結(jié)果:構(gòu)造一個空棧S。 GetTop(S) 初始條件:棧S已
8、存在。 操作結(jié)果:用P返回S的棧頂元素。 Push(&S,ch) 初始條件:棧S已存在。 操作結(jié)果:插入元素ch為新的棧頂元素。 Pop(&S) 初始條件:棧S已存在。 操作結(jié)果:刪除S的棧頂元素。In(ch)操作結(jié)果:判斷字符是否是運算符,運算符即返回1。 Precede(c1, c2) 初始條件:c1,c2為運算符。操作結(jié)果:判斷運算符優(yōu)先權(quán),返回優(yōu)先權(quán)高的。Operate(a,op,b)初始條件:a,b為整數(shù),op為運算符。操作結(jié)果:a與b進行運算,op為運算符,返回其值。num(n)操作結(jié)果:返回操作數(shù)的長度。EvalExpr()初始條件:輸入表達式合法。操作結(jié)果:返回表達式的最終結(jié)果
9、。ADT Stack 4、程序模塊設(shè)計 (1)程序模塊 本程序主要包含3個模塊:主程序模塊、計算模塊以及順序棧操作模塊,調(diào)用關(guān)系如圖所示:順序棧操作模塊計算模塊主程序模塊 圖1:程序模塊圖 (2)系統(tǒng)功能模塊 本程序大致包含10個函數(shù),其中包含主函數(shù)。每個函數(shù)都有其相對應(yīng)的功能實現(xiàn)。 操作符的輸入函數(shù) int In(char c); 運算符比較優(yōu)先級函數(shù) char Proceed(char op,char c); 進行四則運算函數(shù) int Operate(int a,char a1,int b); 實現(xiàn)表達式的求值函數(shù) int EvalExpres(void); 初始化棧函數(shù) void Ini
10、tStack(Stack *s); 入棧函數(shù) void Push(Stack *s, int x); 出棧函數(shù) int Pop(Stack *s); 取棧頂元素函數(shù) int GetTop(Stack *s) ; 判??蘸瘮?shù) void Empty(Stack *s); 主函數(shù) int main() (3)函數(shù)之間主要調(diào)用的關(guān)系圖 本程序主要包含10個程序,各程序之間的關(guān)系如圖所示:(部分函數(shù)用以上的編號表示)Void main()Int EvalExpres(void) 圖2:函數(shù)之間調(diào)用關(guān)系圖 五、詳細設(shè)計和編碼 1、結(jié)構(gòu)體類型的定義 typedef struct int dataMAXSIZ
11、E; int top; /棧頂int base; /棧底 Stack; 2、全局變量定義/以下為函數(shù)聲明void InitStack(Stack *); /初始化棧 int Empty(Stack *); /判空棧 void Push(Stack *, int ); /進棧 int Pop(Stack *);/出棧 int GetTop(Stack *); /取棧頂元素 int Operate(int ,char ,int ); / 計算結(jié)果 char Proceed(char ,char ); / 比較優(yōu)先級 int In(char ); /判斷輸入符int EvalExpres(void)
12、; /表達式計算函數(shù)/ 定義兩個棧分別存放運算符和操作數(shù)Stack StackR,StackD; 3、系統(tǒng)主要子程序的詳細設(shè)計 (1)主函數(shù)模塊設(shè)計int main()/主函數(shù)int v;char ch;while (1)cout *算術(shù)表達式求解* endl;v = EvalExpres();cout 表達式的計算結(jié)果為: v endl;cout Input n to quit and ENTER run again: ch;if (ch = n | ch = N)exit(0); while (ch != n);system(cls);return 0;在主函數(shù)中,設(shè)定用戶操作界面的形式,
13、通過調(diào)用表達式求解的子函數(shù)實現(xiàn)算法所要實現(xiàn)的功能,然后通過while()循環(huán)語句控制,可以實現(xiàn)多次調(diào)試。 (2)計算函數(shù)模塊 int Operate(int a, char a1, int b) int s;int d1 = a;int d2 = b; /把字符ab變?yōu)閷?yīng)數(shù)字 switch (a1)case +:s = d1 + d2;break;case -:s = d2 - d1;break;case *:s = d1*d2;break;case /:if (d1 != 0)s = d2 / d1;elsecout 除數(shù)不可以為0! endl;exit(0);return (s + 0)
14、; /將運算結(jié)果轉(zhuǎn)化為ascii碼的形式入棧, 在計算函數(shù)中,定義3個變量,表示基本運算中的變量。采用開關(guān)語句實現(xiàn)表達式的基本運算,將運算結(jié)果轉(zhuǎn)化為ASCII的形式返回。 (3)表達式求解的函數(shù)模塊 int EvalExpres(void) / 表達式求解函數(shù) int a, b, i = 0, s = 0;char c80, r;InitStack(&StackR);Push(&StackR, #);InitStack(&StackD);cout 請輸入表達式并以#結(jié)束: = 0 & ci = 9)s += ci - 0; /字符相減將字符型轉(zhuǎn)化為整型 while (!In(c+i) /繼續(xù)判
15、斷下一個字符,若不是運算符,表明為多位數(shù),直到讀取到字符為運算符為止 s *= 10;s += ci - 0;Push(&StackD, s + 0); /將整型轉(zhuǎn)化為ascii的形式入棧,使字符在棧內(nèi)以ascii的形式保存,實現(xiàn)多位數(shù)的計算 s = 0; /初始化s,繼續(xù)判斷elsecout 你輸入的表達式有誤! endl;exit(0);elseswitch (Proceed(GetTop(&StackR), ci) /此函數(shù)用來比較讀取的運算符和棧頂運算符的優(yōu)先級 case : /棧頂?shù)膬?yōu)先級高則出棧,并將計算結(jié)果壓入棧內(nèi) r = Pop(&StackR);a = Pop(&StackD
16、) - 0; /操作數(shù)在棧內(nèi)以ascii的形式存儲,出站后要將ascii轉(zhuǎn)化為整型,然后進行運算 b = Pop(&StackD) - 0;Push(&StackD, Operate(a, r, b);break;return (GetTop(&StackD) - 0); / 將棧頂元素轉(zhuǎn)化為整型的形式輸出 對于表達式求解函數(shù),在程序中主要思想是對讀入的表達式進棧進行判斷。若讀入的是0到9之間的字符,將這些字符采用ascii相減的形式轉(zhuǎn)化為整型,再入opnd棧,若讀入的字符為運算符,則將運算符入棧,并比較運算符之間的優(yōu)先級,看是否運算,若棧頂?shù)倪\算符小于當前輸入的運算符,則不需運算,只要將當前
17、運算符入棧即可。否則,運算。運算時先將optr棧的棧頂運算符和opnd棧的棧頂、次棧頂元素出棧,并將opnd棧中出棧的元素的ASCII形式轉(zhuǎn)化為整型再計算,最后講計算結(jié)果再轉(zhuǎn)化為ASCII碼的形式壓入opnd棧中。使表達式求解函數(shù)返回值為opnd的棧頂元素。六、上級調(diào)試過程 1、遇到問題以及解決方案 問題1、調(diào)試時沒有錯誤,但運行時顯示錯誤。解決方案:通過它提示的錯誤和警告,在判斷是否為運算符的子函數(shù)中出現(xiàn)錯誤,如果為運算符時返回1,其次返回0,在返回0時沒有用else,這樣使得整個子函數(shù)可以返回一個有效值。 問題2、調(diào)試時程序顯示沒有錯誤,可以運行,但在運行時結(jié)果卻出現(xiàn)錯誤。解決方案:把程序
18、從頭看了一遍,發(fā)現(xiàn)在比較優(yōu)先級的函數(shù)中,優(yōu)先級的比較比較亂,而且部分出錯,后來查了關(guān)于運算符優(yōu)先級的資料,通過在紙上把各種優(yōu)先級列出,解決這個錯誤。2、算法的時間復(fù)雜度 由于在主函數(shù)用到嵌套循環(huán),故算法的時間復(fù)雜度為O(n2)。3、測試結(jié)果及其分析 (1)實現(xiàn)基本的加減乘除運算,當想要繼續(xù)輸入表達式時點擊enter鍵,若要結(jié)束,點擊n或N鍵即可,而且可實現(xiàn)多位數(shù)的運算。(2)實現(xiàn)復(fù)雜的算術(shù)表達式(3)錯誤表達式的處理4、用戶使用說明 (1)本程序執(zhí)行的文件為“算數(shù)表達式的求解問題”。 (2)所求表達式中都只是僅包含加、減、乘、除4種基本運算的,其中也包含括號的應(yīng)用,所有的運算對象均為簡單變量,
19、要求將表達式中的數(shù)字字符轉(zhuǎn)化為整型,且輸入表達式以“#”結(jié)束。 (3)輸入表達式時,以#結(jié)束,當點擊回車鍵時即可得到運算結(jié)果,當想繼續(xù)輸入表達式時,再次點擊回車鍵即可,當想結(jié)束時,點擊字母n或N。 (4)當輸入錯誤表達式時,程序會給出相應(yīng)的提醒。七、總結(jié)與心得這次課程設(shè)計讓我更加了解大一學到的C+和大二學到的數(shù)據(jù)結(jié)構(gòu)。課設(shè)題目要求不僅要求對課本知識有較深刻的了解,同時要求程序設(shè)計者有較強的思維和動手能力和更加了解編程思想和編程技巧。這次課程設(shè)計讓我有一個深刻的體會,那就是細節(jié)決定成敗,編程最需要的是嚴謹,如何的嚴謹都不過分,往往檢查了半天發(fā)現(xiàn)錯誤發(fā)生在某個括號,分號,引號,或者數(shù)據(jù)類型上。就像
20、我在寫EvalExpres()函數(shù)時,忘了指針的地址符值不用加*號,這一點小小的錯誤也耽誤了我?guī)资昼姡哉f細節(jié)很重要。程序設(shè)計時,也不要怕遇到錯誤,在實際操作過程中犯的一些錯誤還會有意外的收獲,感覺課程設(shè)計很有意思。在具體操作中這學期所學的數(shù)據(jù)結(jié)構(gòu)的理論知識得到鞏固,達到課程設(shè)計的基本目的,也發(fā)現(xiàn)自己的不足之出,在以后的上機中應(yīng)更加注意,同時發(fā)現(xiàn)上機的重要作用,特別算術(shù)表達式有了深刻的理解。通過實際操作,我也發(fā)現(xiàn)我的好多不足之處:(1)用棧的結(jié)構(gòu)來解決表達式的求值,首先要解決的問題是如何將人們習慣書寫的表達式轉(zhuǎn)換成計算機容易處理的表達式。開始有些茫然,后來通過結(jié)合課本和同學的幫助完成了該課
21、題。(2)對一些看似簡單的東西掌握不夠熟練,比如由于函數(shù)的調(diào)用參數(shù)問題不熟而造成了調(diào)試的困難。對于語法的掌握也欠缺成熟,需要進一步掌握。(3)棧的結(jié)構(gòu)理解不夠清晰,造成了設(shè)計程序時理不清頭緒,需要對數(shù)據(jù)結(jié)構(gòu)有更深層次的理解。八、參考文獻 1王昆侖 、李紅主編,數(shù)據(jù)結(jié)構(gòu)與算法,北京:中國鐵道出版社,2007年5月 2阮宏一 、魯靜主編,數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(C/C+描述),北京:電子工業(yè)出版社,2011年1月 3嚴蔚敏、吳偉民主編 數(shù)據(jù)結(jié)構(gòu)(C語言版) 清華大學出版社 2002 4殷人昆等著 數(shù)據(jù)結(jié)構(gòu)(C+版) 清華大學出版社 2001附錄(源程序):#include using namespace
22、 std;#define MAXSIZE 16typedef structint dataMAXSIZE;int top;int base; /棧底 Stack; / 順序棧的定義/以下為函數(shù)聲明void InitStack(Stack *); /初始化棧 int Empty(Stack *); /判空棧void Push(Stack *, int); /進棧int Pop(Stack *);/出棧int GetTop(Stack *); /取棧頂元素int Operate(int, char, int); / 計算結(jié)果char Proceed(char, char); / 比較優(yōu)先級int
23、In(char); /判斷輸入符int EvalExpres(void); /表達式計算函數(shù)/ 定義兩個棧分別存放運算符和操作數(shù)Stack StackR, StackD;int main()/主函數(shù)int v;char ch;while (1)cout *算術(shù)表達式求解* endl;v = EvalExpres();cout 表達式的計算結(jié)果為: v endl;cout Input n to quit and ENTER run again: ch;if (ch = n | ch = N)exit(0); while (ch != n);system(cls);return 0;void In
24、itStack(Stack *s) /初始化棧s-top = 0;s-base = 0;int Empty(Stack *s)/判斷棧是否為空if (s-top = s-base)return 1; /棧空時返回1,否則返回0 elsereturn 0;void Push(Stack *s, int x) / 進棧 if (s-top = MAXSIZE)cout error datas-top = x;s-top+;int Pop(Stack *s)/ 出棧int e;if (Empty(s)cout error top-;e = s-datas-top;return e;int GetTo
25、p(Stack *s) /取棧頂元素if (Empty(s)cout error datas-top - 1;int EvalExpres(void) / 表達式求解函數(shù)int a, b, i = 0, s = 0;char c80, r;InitStack(&StackR);Push(&StackR, #);InitStack(&StackD);cout 請輸入表達式并以#結(jié)束: = 0 & ci = 9)s += ci - 0; /字符相減將字符型轉(zhuǎn)化為整型 while (!In(c+i) /繼續(xù)判斷下一個字符,若不是運算符,表明為多位數(shù),直到讀取到字符為運算符為止 s *= 10;s +
26、= ci - 0;Push(&StackD, s + 0); /將整型轉(zhuǎn)化為ascii的形式入棧,使字符在棧內(nèi)以ascii的形式保存,實現(xiàn)多位數(shù)的計算 s = 0; /初始化s,繼續(xù)判斷elsecout 你輸入的表達式有誤! endl;exit(0);elseswitch (Proceed(GetTop(&StackR), ci) /此函數(shù)用來比較讀取的運算符和棧頂運算符的優(yōu)先級 case : /棧頂?shù)膬?yōu)先級高則出棧,并將計算結(jié)果壓入棧內(nèi) r = Pop(&StackR);a = Pop(&StackD) - 0; /操作數(shù)在棧內(nèi)以ascii的形式存儲,出站后要將ascii轉(zhuǎn)化為整型,然后進行
27、運算 b = Pop(&StackD) - 0;Push(&StackD, Operate(a, r, b);break;return (GetTop(&StackD) - 0); / 將棧頂元素轉(zhuǎn)化為整型的形式輸出int In(char c) /判斷C是否為運算符是返回1否則返回0char ch7 = +, -, *, /, #, (, ) ;int i;for (i = 0; i ; break;case *:case /:case (: ch = ; break;case (: ch = ;else if (op = () /*棧頂元素為(的時候*/switch (c)case +:ca
28、se -:case *:case /:case (: ch = ; break;case #:cout Error!沒有右括號! ; break;case (:cout Error!括號匹配錯誤! endl;exit(0);else if (op = #) /棧頂元素為#的時候 switch (c)case +:case -:case *:case /:case (: ch = ; break;case ):cout Error!沒有左括號! endl;exit(0);return ch;int Operate(int a, char a1, int b)int s;int d1 = a;in
29、t d2 = b; /把字符ab變?yōu)閷?yīng)數(shù)字 switch (a1)case +:s = d1 + d2;break;case -:s = d2 - d1;break;case *:s = d1*d2;break;case /:if (d1 != 0)s = d2 / d1;elsecout 除數(shù)不可以為0! endl;exit(0);return (s + 0); /將運算結(jié)果轉(zhuǎn)化為ascii碼的形式入棧, 車廂調(diào)度1、 問題陳述假設(shè)停在鐵路調(diào)度站入口處的車廂序列的編號一次為1,2,3,4。設(shè)計一個程序,求出所有可能由此輸出的長度為4的車廂序列。2、 問題分析與設(shè)計 車廂調(diào)度問題是實際生活中
30、的一個抽象問題,實際上其本質(zhì)就是一個N個數(shù)的全排列問題,所謂全排列算法就是對于給定的字符集,用有效的方法將所有可能的全排列無重復(fù)無遺漏地枚舉出來。 N個字符的全體排列之間存在一個確定的線性順序關(guān)系。所有的排列中除最后一個排列外,都有一個后繼;除第一個排列外都有一個前驅(qū)。每一個排列的后繼都可以從它的前驅(qū)經(jīng)過最少的變化得到,全排列的生產(chǎn)算法就是從第一個排列開始逐個生產(chǎn)所有的排列的方法。 全排列的生產(chǎn)法通常有幾下幾種: 字典排序法:從右往左開始找出第一個比右邊數(shù)字小的數(shù)字的序號j,然后在以j為基準再從左往右,找出第一個比它大的最小的數(shù),然后這兩個數(shù)位置對調(diào)。例如:1 5 4 7 6 32 的下一個排
31、列是 1 56 74 3 2 。 鄰位交換法:鄰位對換法中下一個排列總是上一個排列某相鄰兩位對換得到的。例如:以4個元素的排列為例,將最后的元素4逐次與前面的元素交換,可以生成4個新排列:1 2 3 4、1 243、14 2 3、4 1 2 3。然后將最后一個排列的末尾的兩個元素交換,再逐次將排頭的4與其后的元素交換,又生成四個新排列:4 13 2、143 2、1 3 4 2、1 3 2 4。再將最后一個排列的排頭的兩個元素交換,再將4從后往前移:3 1 2 4、3 14 2、34 1 2、4 3 1 2。如此循環(huán)既可求出全部排列。 遞歸類算法: 我將選擇遞歸類算法作為實現(xiàn)該車廂調(diào)度的主要算法,通過設(shè)計perm遞歸函數(shù)。3、 運行結(jié)果 當列車長度為4時:四、設(shè)計體會與總結(jié)遞歸算法是解決問題的一種非常好的方法,我在網(wǎng)上看到這個車廂調(diào)度的問題一般用棧來實現(xiàn),但是覺得可以用遞歸來完成,而且比棧更簡單,就選擇了用遞歸來完成,通過這兩周內(nèi)的時間,我如期完成了此次的課程設(shè)計,車廂調(diào)度算法從本質(zhì)上講就是N個數(shù)的全排列算法,雖然從代碼量上看是比較少,但是能夠徹底的從分析問題到理解問題再到解決問題,實際上還是沒那么容易。通過此次課程設(shè)計我們大學生應(yīng)該注重算法的分析以及打牢和鞏固基礎(chǔ),這樣在實現(xiàn)一些比較稍微大型的一些項目來才會顯的得心應(yīng)手。該算法主要涉及到的一些知識點和難點主要有一下幾個方
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025河北建筑安全員-A證考試題庫附答案
- DB32T-食品安全督導(dǎo)工作規(guī)范編制說明
- 三個共點力的動態(tài)平衡
- 單位人力資源管理制度精彩大合集十篇
- 公用事業(yè)行業(yè)十二月行業(yè)動態(tài)報告:水電發(fā)電量降幅收窄風光核裝機目標明確
- 江蘇省連云港市海州區(qū)2024-2025學年八年級上學期期末考試生物學試卷(含答案)
- 單位管理制度展示合集【職員管理篇】十篇
- 年產(chǎn)5000臺液晶電視項目可行性研究報告建議書
- 單位管理制度展示選集人力資源管理篇
- 單位管理制度品讀選集人員管理篇十篇
- 機動車維修竣工出廠合格證
- 陜西延長石油精原煤化工有限公司 60 萬噸 - 年蘭炭綜合利用項目 ( 一期 30 萬噸 - 年蘭炭、1 萬噸 - 年金屬鎂生產(chǎn)線)竣工環(huán)境保護驗收調(diào)查報告
- 大病救助申請書
- 法學概論-課件
- 廈門物業(yè)管理若干規(guī)定
- 外科護理學試題+答案
- 齊魯醫(yī)學屈光和屈光不正匯編
- 貨架的技術(shù)說明(一)
- 【高等數(shù)學練習題】皖西學院專升本自考真題匯總(附答案解析)
- 高處作業(yè)安全技術(shù)交底-
- 工抵房協(xié)議模板
評論
0/150
提交評論