資料結構實習-四.

Slides:



Advertisements
Similar presentations
1 生物計算期末作業 暨南大學資訊工程系 2003/05/13. 2 compare f1 f2  只比較兩個檔案 f1 與 f2 ,比完後將結果輸出。 compare directory  以兩兩比對的方式,比對一個目錄下所有檔案的相 似程度。  將相似度很高的檔案做成報表輸出,報表中至少要.
Advertisements

6-1 指標簡介 6-2 指標與陣列 6-3 動態配置記憶體 6-4 本章綜合練習
布林代數的應用--- 全及項(最小項)和全或項(最大項)展開式
: A-Sequence 星級 : ★★☆☆☆ 題組: Online-judge.uva.es PROBLEM SET Volume CIX 題號: Problem D : A-Sequence 解題者:薛祖淵 解題日期: 2006 年 2 月 21 日 題意:一開始先輸入一個.
:Word Morphing ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10508:word morphing 解題者:楊家豪 解題日期: 2006 年 5 月 21 日 題意: 第一行給你兩個正整數, 第一個代表下面會出現幾個字串,
Instructor: Ching-Chi Lin 林清池 助理教授
3Com Switch 4500 切VLAN教學.
: Boxes ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11003: Boxes 解題者:蔡欣燁 解題日期: 2007 年 3 月 19 日.
Graph V(G 1 )={0, 1, 2, 3, 4, 5, 6, 7, 8, 9} E(G 1 )={(0, 2), (0, 3), (1, 4), (2, 3), (2, 5), (2, 6), (3, 6), (3, 7), (4, 7), (5, 6), (5,
:New Land ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11871: New Land 解題者:施博修 解題日期: 2011 年 6 月 8 日 題意:國王有一個懶兒子,為了勞動兒子,他想了一個 辦法,令他在某天早上開始走路,直到太陽下山前,靠.
: OPENING DOORS ? 題組: Problem Set Archive with Online Judge 題號: 10606: OPENING DOORS 解題者:侯沛彣 解題日期: 2006 年 6 月 11 日 題意: - 某間學校有 N 個學生,每個學生都有自己的衣物櫃.
第一章 變數、常數及資料型態. 變數 C 程式語言的變數名稱 第一個字必須是英文字母或底線 (_) 之後可以是數字, 英文字母或底線 (_) 不可以是保留字 例: Num (Ο) _score (Ο) C&C (X) 8num (X)
: ShellSort ★★☆☆☆ 題組: Problem D 題號: 10152: ShellSort 解題者:林一帆 解題日期: 2006 年 4 月 10 日 題意:烏龜王國的烏龜總是一隻一隻疊在一起。唯一改變烏龜位置 的方法為:一隻烏龜爬出他原來的位置,然後往上爬到最上方。給 你一堆烏龜原來排列的順序,以及我們想要的烏龜的排列順序,你.
Chapter 3 Growth of Functions Asymptotic notation Θ-notation: f(n) = Θ(g(n)) , g(n) is an asymptotically tight bound for f(n) 。 Θ(g(n)) = {f(n)|
STAT0_sampling Random Sampling  母體: Finite population & Infinity population  由一大小為 N 的有限母體中抽出一樣本數為 n 的樣 本,若每一樣本被抽出的機率是一樣的,這樣本稱 為隨機樣本 (random sample)
: Matrix Decompressing ★★★★☆ 題組: Contest Volumes with Online Judge 題號: 11082: Matrix Decompressing 解題者:蔡權昱、劉洙愷 解題日期: 2008 年 4 月 18 日 題意:假設有一矩陣 R*C,
1. 假設以下的敘述為一未提供 “ 捷徑計算 ” 能力的程式段,試用程 式設計的技巧,使此敘述經此改 寫的動作後,具有與 “ 捷徑計算 ” 之 處理方法相同之處理模式。 if and then E1 else E2 endif.
JAVA 程式設計與資料結構 第十四章 Linked List. Introduction Linked List 的結構就是將物件排成一列, 有點像是 Array ,但是我們卻無法直接經 由 index 得到其中的物件 在 Linked List 中,每一個點我們稱之為 node ,第一個 node.
Chapter 07 低階程式語言.
具備人臉追蹤與辨識功能的一個 智慧型數位監視系統 系統架構 在巡邏模式中 ,攝影機會左右來回巡視,並 利用動態膚色偵測得知是否有移動膚色物體, 若有移動的膚色物體則進入到追蹤模式,反之 則繼續巡視。
第 1 章 PC 的基本構造. 本章提要 PC 系統簡介 80x86 系列 CPU 及其暫存器群 記憶體: Memory 80x86 的分節式記憶體管理 80x86 的 I/O 結構 學習組合語言的基本工具.
Chapter 13 塑模靜態觀點:物件圖 Static View : Object Diagram.
Introduction to Java Programming Lecture 17 Abstract Classes & Interfaces.
24-6 設定開始與結束場景中的 程式 最後我們要替這個遊戲收個尾, 幫它把開始 的等待畫面跟結束畫面處理一下。
: The largest Clique ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11324: The largest Clique 解題者:李重儀 解題日期: 2008 年 11 月 24 日 題意: 簡單來說,給你一個 directed.
: Tight words ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: : Tight Words 解題者:鐘緯駿、林一帆 解題日期: 2006 年 03 月 14 日 題意: 給定數字 k 與 n (0 ≦ k.
: Happy Number ★ ? 題組: Problem Set Archive with Online Judge 題號: 10591: Happy Number 解題者:陳瀅文 解題日期: 2006 年 6 月 6 日 題意:判斷一個正整數 N 是否為 Happy Number.
: Fast and Easy Data Compressor ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10043: Fast and Easy Data Compressor 解題者:葉貫中 解題日期: 2007 年 3.
Chapter 2 Getting Started Insertion Sort: 能有效率地排序小數字的演算法 範例 :
第十章 再論結構. 指標與結構的關係 /* File name: ex10-1a.c */ #include int main() { struct student { char *name; int score; }; struct student st= {"Brian", 97}; struct.
: Ahoy, Pirates! ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11402: Ahoy, Pirates! 解題者:李重儀 解題日期: 2008 年 8 月 26 日 題意:有一個海盜島有 N 個海盜,他們的編號 (id)
: Multisets and Sequences ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11023: Multisets and Sequences 解題者:葉貫中 解題日期: 2007 年 4 月 24 日 題意:在這個題目中,我們要定義.
:Nuts for nuts..Nuts for nuts.. ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 10944:Nuts for nuts.. 解題者:楊家豪 解題日期: 2006 年 2 月 題意: 給定兩個正整數 x,y.
資料結構實習-一 參數傳遞.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2008.
4 堆疊與佇列 4.1 前言 四種基本的資料結構 (可儲存資料的容器) 陣列 (Array)、串列(List): 最基本
公用品.  該物品的數量不會因一人的消費而受到 影響,它可以同時地被多人享用。 角色分配  兩位同學當我的助手,負責:  其餘各人是投資者,每人擁有 $100 , 可以投資在兩種資產上。  記錄  計算  協助同學討論.
: Problem G e-Coins ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10306: Problem G e-Coins 解題者:陳瀅文 解題日期: 2006 年 5 月 2 日 題意:給定一個正整數 S (0
: A-Sequence ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10930: A-Sequence 解題者:陳盈村 解題日期: 2008 年 5 月 30 日 題意: A-Sequence 需符合以下的條件, 1 ≤ a.
: Beautiful Numbers ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11472: Beautiful Numbers 解題者:邱經達 解題日期: 2011 年 5 月 5 日 題意: 若一個 N 進位的數用到該.
Section 4.2 Probability Models 機率模式. 由實驗看機率 實驗前先列出所有可能的實驗結果。 – 擲銅板:正面或反面。 – 擲骰子: 1~6 點。 – 擲骰子兩顆: (1,1),(1,2),(1,3),… 等 36 種。 決定每一個可能的實驗結果發生機率。 – 實驗後所有的實驗結果整理得到。
函式 Function Part.2 東海大學物理系‧資訊教育 施奇廷. 遞迴( Recursion ) 函式可以「呼叫自己」,這種動作稱為 「遞迴」 此程式的執行結果相當於陷入無窮迴圈, 無法停止(只能按 Ctrl-C ) 這給我們一個暗示:函式的遞迴呼叫可以 達到部分迴圈的效果.
資料結構實習-二.
演算法 8-1 最大數及最小數找法 8-2 排序 8-3 二元搜尋法.
845: Gas Station Numbers ★★★ 題組: Problem Set Archive with Online Judge 題號: 845: Gas Station Numbers. 解題者:張維珊 解題日期: 2006 年 2 月 題意: 將輸入的數字,經過重新排列組合或旋轉數字,得到比原先的數字大,
Chapter 2. Recurrence Relations (遞迴關係)
Learning Method in Multilingual Speech Recognition Author : Hui Lin, Li Deng, Jasha Droppo Professor: 陳嘉平 Reporter: 許峰閤.
Chapter 10 m-way 搜尋樹與B-Tree
: Function Overloading ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11032:Function Overloading 解題者:許智祺 解題日期: 2007 年 5 月 8 日 題意:判對輸入之數字是否為.
演算法課程 (Algorithms) 國立聯合大學 資訊管理學系 陳士杰老師 Course 7 貪婪法則 Greedy Approach.
本章重點 2-1 有序串列(Ordered List) 2-2 介紹陣列(array) 2-3 矩陣(matrix)的應用
: Help My Brother ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11033: Help My Brother 解題者: 呂明璁 解題日期: 2007 年 5 月 14 日.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2009.
INTRODUCTION TO MATLAB SHAWNNTOU. What Is MATLAB? MATLAB® is a high-performance language for technical computing. MATLAB® is a high-performance language.
中序轉後序 藉由由左向右掃瞄中序運算式產生後序運算式,遇到 運算元就直接輸出,遇到運算符號則先存入堆疊,將 優先權較高者輸出。 範例: a + b * c TokenStack [0] [1] [2] topoutput aa ++0a b+0ab *+ *1ab c+ *1abc eosabc*+
: Problem E Antimatter Ray Clearcutting ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11008: Problem E Antimatter Ray Clearcutting 解題者:林王智瑞.
連續隨機變數 連續變數:時間、分數、重量、……
函式 Function 東海大學物理系‧資訊教育 施奇廷. 函式簡介 當程式越來越大、越複雜時,程式的維護、 除錯會變得更困難,此時必須引入函式來 簡化程式或將程式分段,將程式重複的部 分改寫為函式,將程式「模組化」 這種作法有下列優點:節省程式發展的時 間、邏輯容易瞭解、程式容易除錯、可分 工合作完成程式.
Visual C++重點複習.
資料結構實習-六.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2010.
: SAM I AM ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11419: SAM I AM 解題者:李重儀 解題日期: 2008 年 9 月 11 日 題意: 簡單的說,就是一個長方形的廟裡面有敵人,然 後可以橫的方向開砲或縱向開砲,每次開砲可以.
數字系統與資料表示法 教師: 陳炯勳 數系轉換 r進制數字 稱為 base r或 radix r 有r個計數符號,計數順序逢r歸零(進位) A n A n - 1 ‥‥A 2 A 1 A 0 ﹒A -1 A -2 ‥‥A -m 其中A n 及A.
第8章 字串與陣列 8-1一維陣列的處理 8-2 字串處理 8-3 多維陣列的處理 8-4 動態陣列與參數傳遞 8-5 陣列排序與搜尋.
: Finding Paths in Grid ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11486: Finding Paths in Grid 解題者:李重儀 解題日期: 2008 年 10 月 14 日 題意:給一個 7 個 column.
:Problem E.Stone Game ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10165: Problem E.Stone Game 解題者:李濟宇 解題日期: 2006 年 3 月 26 日 題意: Jack 與 Jim.
幼兒行為觀察與記錄 第八章 事件取樣法.
1 Introduction to Java Programming Lecture 3 Mathematical Operators Spring 2009.
第 1 章 PC 的基本構造. 本章提要 PC 系統簡介 80x86 系列 CPU 及其暫存器群 記憶體: Memory 80x86 的分節式記憶體管理 80x86 的 I/O 結構 學習組合語言的基本工具.
: How many 0's? ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11038: How many 0’s? 解題者:楊鵬宇 解題日期: 2007 年 5 月 15 日 題意:寫下題目給的 m 與 n(m
Presentation transcript:

資料結構實習-四

練習:多項式的運算 寫一個程式,處理多項式的相加與相乘。 Ex : 2X3 + 3X2 + 2 = 2X3 + 3X2 + 0X1 + 2X0 黑色框:項。 紅色:係數。 藍色:次數。 系數有可能是負數或是浮點數。 次數一定為0或正整數。

多項式的儲存方式 使用define與typedef來建立一種新結構型態,來儲存每一項的資訊。 typedef struct { float coef; //系數 unsigned int expon; //次數 }polynomial; 使用該結構型態的陣列來存放所有多項式的每一項資訊。 polynomial p[MAX_TERM]; 定義一個常數,來決定每一個陣列的項數上限。 #define MAX_TERM 100

多項式的儲存方式 所有的多項式都存在同一個陣列中。 儲存所有多項式的陣列需可以被所有函式存取。 全域變數。 傳入pointer。 一個avail offset儲存目前第一個可用的空間。 一個多項式需要兩個offset,紀錄開頭與結尾。 開頭與結尾的offset變數,可能在某些函式中變更。

多項式的儲存方式 把兩個多項式A(x)= 和B(x)= 儲存在陣列中。 start A finish A start B finish B avail coef 2 1 5 3 expon 1000 4 0 1 2 3 4 5 6 start A,start B :表示A,B的第一項的索引。 finish A ,finish B :表示A,B的最後一項的索引。 avail :表示陣列中下一個可用的空閒位置之索引。

多項式的儲存方式—0多項式 任何多項式至少會佔去一個項的空間,如果該項的係數為0,表示此多項式為0多項式。 任何多項式運算的結果,其初始值為0多項式。 Avail指向的位置一定不被任何多項式佔用。 finish A Avail start A coef … expon

加入一個次項至多項式 找到要加入的位置。 為多項式新增一個項的空間。 把所有次數低於新增目標的項往後位移一格。 寫入要加入的項。 對次數來說,p[x-1]>y 且 p[x] <=y 如果已有該次項,則不用加入。 如果目標為0多項式,直接寫入。 如果加入的目標為0,則直接跳過。 為多項式新增一個項的空間。 0多項式則可以跳過。 要注意空間是否用完。 把所有次數低於新增目標的項往後位移一格。 寫入要加入的項。

加入一個次項--PseudoCode for(ctr=*start ; ctr <= *end && p[ctr].expon > expon ; ctr++ ); Extend end with 1 term; for(ctr2 = *end ; ctr2 > ctr ; ctr2-- ) p[ctr2]=p[ctr2-1]; Insert the target term;

加入一個次項—演算法 poly_attach(int *start, int *end, float coef, int expon); 7 Expon 2 Attach target: Coef 3 5 4 2 … Expon 1 7 4 2 2 1 S E A E A

多項式的加法 同次項目,係數相加。 項數可能增加,需注意溢位問題。 Ex: (3X3 + 5X2 + 5) + (-5X2 + 7X +3) + 3 + 3X3 + 7X + 8

多項式的加法 – pseudo code while (A and B are not end yet) { if(A term’s degree > B term’s) add A term into result; move A to next term; else if (A turm’s degree < B turm’s) add B term into result; move B to next term; else add A term with B term and save into result; move A and B to next term; } Add every A term which not been added into result; Add every B term which not been added into result;

多項式的加法 –演算法 void poly_add(int start_a,int end_a,int start_b,int end_b, int *start_d,int *end_d); Coef 3 5 -5 7 … Degree 2 1 3 7 8 3 1 S E S E S E A A E A E

memset() void * memset ( void * ptr, int value, size_t num ); #include <string.h> 將一段記憶體空間填入特定的字元。 ptr為開始填的位置。 value為要填入的字元。 num 為要填入的長度。 int, unsigned int, float (IEEE 754)在每一個byte全部填0的情況下,代表的值皆為0。 Ex. memset (array,0,100); 將會把指標array後面100個char填入 0 。

sizeof() sizeof(<型態>) 它是一個operator,不是function。 傳回一個形態所佔用的記憶體大小(byte)。 Ex : sizeof(int) == 4; 可以傳入自定義的型態或是結構。

多項式的乘法 被乘數需要和乘數的每一項相乘。 相乘時,係數相乘,次數相加。 Ex: (5X2 + 5) * (7X +3) 5X2 + 5 + 3 x 35X3 + 35X + 15X2 + 15 35X3 +15X2 + 35X + 15

多項式的乘法 可以分解成兩個動作: 被乘數多項式乘上乘數中的某一個項。 把1.和目前的結果相加。 2.和我們的加法是一模一樣的,只需要寫1.。

多項式的乘法 – pseudo code while (B are not end yet) { temp = polynomial_multi_1 (A, B’s term); result += temp; move B to next term; } polynomial_multi_1 (A, B term) for every term of A coef *= B term’s coef; degree += B term’s degree;

多項式的乘法 –演算法 * + + A(X) = X2 + 2X + 1 B(X) = X3 + 2X + 3 X2 + 2X + 1 [1] A(X) *2X [2] [1]+[2] [3] A(X) *3 [4] [3]+[4]

多項式的計算 – 加分題 為多項式代入一個值,並算出結果。 Ex : 以X=4.5 代入 5X2 - 7X +3 = 135.75 double pow (double base, double exponent ); #include <math.h> 傳回 baseexponent 的值。

練習:多項式的運算 輸入:poly_a.txt / poly_b.txt 為兩個多項式A/B。 請至教學網站下載範例檔。 多項次依照其次數遞減列出每一項。 每一項之間以換行符號(\n)相隔。 每一項的格式為<係數(浮點數)>\t<次數(非負整數)> 總長度不超過100個項目。 次數的大小介於 0 ~ 16,777,215 (FFFFFF) 。 係數的大小符合IEEE 754規範。

練習:多項式的運算 輸出: 注意:係數為0的項目不得印出。 注意:加法與乘法須寫成function A多項式以及B多項式。 (A + B) * B 的多項式結果。 將X以3.14代入所得到的值。(Bonus) 注意:係數為0的項目不得印出。 注意:加法與乘法須寫成function