- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
datastructures实习二两阵列的最短距离数值字谜
Data Structures實習二 兩陣列的最短距離 / 數值字謎 Instructor: Ching-Chi Lin林清池 助理教授 chingchi.lin@ Department of Computer Science and EngineeringNational Taiwan Ocean University Outline * 練習一 (兩陣列的最短距離) 練習二 (數字字謎) 練習一 兩陣列的最短距離 * 請寫一個程式算出兩陣列的最短距離。 輸入兩自小到大排好的陣列x[ ]與y[ ] 。 陣列的最短距離: x[i]與y[j]是兩個元素,|x[i]-y[j]|就是這兩個元素之間的距離。 所有元素間距離的最小值則為陣列的最短距離。 練習一 兩陣列的最短距離 * 範例: x[]={1,3,5,7} y[]={2,6,8} 1 3 5 7 2 1 1 3 5 6 5 3 1 1 8 7 5 3 1 x ,y陣列的最短距離為1 練習一 兩陣列的最短距離 * 解法一(暴力法): 如果x[]與y[]有m與n個元素,那麼元素之間的距離就有m*n種。 使用兩層的迴圈即可把m*n種距離都求出,陣列的最短距離也可以求出。 解法二(非暴力法): 利用x[]與y[]陣列已排序好的特性,就不需把m*n種距離都算出。 練習一 兩陣列的最短距離 * 假設x,y兩陣列已排序。 則對任何x[i] ,若j滿足下列條件: x[i] = y[j-1] x[i] = y[j] 則 min (x[i] - y[j-1] ,y[j] - x[i]) 即為x[i]至y矩陣的最短距離。 練習一 兩陣列的最短距離 * 範例: x[]={4,12,15,22} y[]={1,7,10,14,18,25} 1 7 10 14 18 25 4 3 3 6 10 14 21 12 11 5 2 2 6 13 15 14 8 5 1 3 10 22 21 15 12 8 4 3 練習一 兩陣列的最短距離Pseudo Code * for every x in X[]; { for every y in Y[]; if (Y[y] = X[x] AND y length of Y[]) move to next y; if(y == length of Y[]) //y陣列的數值都比x”小”的情況 shortest_x=X[x]-Y[y-1]; else if(y==0) //y陣列的數值都比x”大”的情況 shortest_x=Y[0]-X[x]; else shortest_x=min( X[x] - Y[y-1] , Y[y] - X[x]); shortest = min( shortest_x , shortest ); move to next x; } //提示: shortest / shortest_x 的初始值應該永遠比任何值還要大。 練習一 兩陣列的最短距離 * 1 7 10 14 18 15 22 24 Shortest_x = Shortest = X陣列 Y陣列 Max Max 3 3 4 12 2 2 4 12 15 1 1 22 3 練習一 兩陣列的最短距離 * 輸入:DSLab_02_x.txt /DSLab_02_y.txt 為兩個已排序的陣列。 請至教學網站下載範例檔。 數字之間以換行符號(\n)相隔。 總長度不超過255 。 數字的大小介於 0 ~ 16,777,215 (FFFFFF)。 輸出:陣列的最短距離。 特殊需求: 請分別寫出暴力法與非暴力法兩種程式。 請算出算出演算法的 Time Complexity。 練習一 兩陣列的最短距離 * 每一個英文字母代表著一位數字(0~9)。 每一個數字的最左邊皆不為0(因此V,C,T不為0)。 請寫一個程式,找出下列題目的答案。 V I N G T C I N Q + C I N Q -------------------- T R E N T E 練習一 數值字謎 * 解法一(暴力法): 使用這個程式,可以算出結果但內層的if要執行接近10^9次,是很笨的方法。 for(V=1;V=9;V++) for(I=0;I=9;I++) if(I!=V) for(N=0;N=9;N++) if(N!=V N!=I) …… for(E=1;E=9;E++){
您可能关注的文档
- cnki知识资源组织与管理平台的构建.ppt
- coachintaiwanworldstrategy.ppt
- collegeofscience,ntu.ppt
- collision-freepathplanningofdual-armrobotsbasedon.ppt
- commonshipping&tradingterms常用货运及贸易术语.doc
- comparisonofbankcompetivenessbetween.ppt
- computingandseiichapter4requirementsengineering.ppt
- content.doc
- contents.doc
- cpu结构和功能.ppt
文档评论(0)