




已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Foshan University數(shù)據(jù)結(jié)構(gòu)與算法期末實驗題 學 院: 電子與信息工程學院 專 業(yè): 13計算機科學與技術(shù)2班 學 號: 2013314209 學生姓名: 張協(xié)鎏 二 一 五 年 一 月一、題目:卡片問題 等級B一、問題描述有一疊n張卡片,從上到下依次編號為1n,從最上面的一張開始按如下的順序進行操作:把最上面的第一張卡片拿掉,把下一張卡片放在這一疊卡片的最下面;再把最上面的第一張卡片拿掉,把下一張卡片放在這一疊卡片的最下面;依次重復(fù)這樣做,直到手中剩下一張卡片。當n=500時,請按拿走卡片的順序,列出每次拿掉的卡片數(shù)字。二、算法的基本思想新建循環(huán)隊列;向循環(huán)隊列中插入元素;依次刪除隊頭元素,將隊尾指針賦予新的隊頭元素的值,對隊頭指針后移;將剩余的最后一個元素輸出;1. 數(shù)據(jù)結(jié)構(gòu)定義typedef struct /定義循環(huán)隊列QElemtype *base; int front;int rear;SqQueue;SqQueue Q;QElemtype e,x;2. 各模塊之間的調(diào)用關(guān)系主函數(shù) void main()定義循環(huán)隊列指針SqQueue *p= &Q初始化循環(huán)隊列InitQueue(p)調(diào)用入隊操作EnQueue(p,x)調(diào)用出隊操作DeQueue(p)調(diào)用隊列順序改變操作kapian(p)三、 測試數(shù)據(jù)四、源程序#include#include #define ERROR -1#define OK 1#define n 10000typedef int QElemType;typedef struct QElemType *base; int front; int rear;SqQueue;SqQueue Q;int InitQueue(SqQueue *Q)/構(gòu)造一個空隊列Q Q-base=(QElemType*)malloc(n+1)*sizeof(QElemType); if(!Q-base) return ERROR; Q-front=Q-rear=0; return OK;int EnQueue(SqQueue *Q,QElemType x)/插入元素X為新的隊尾元素 if(Q-rear+1)%(n+1)=Q-front) return ERROR; Q-baseQ-rear=x; Q-rear=(Q-rear+1)%(n+1); return OK;int DeQueue(SqQueue *Q,QElemType &x)/刪除隊頭元素,用X返回其值 x=Q-baseQ-front; if(Q-front=Q-rear) return ERROR;Q-front=(Q-front+1)%(n+1); return OK;int kapian(SqQueue *Q) Q-baseQ-rear=Q-baseQ-front; Q-front=(Q-front+1)%(n+1); Q-rear=(Q-rear+1)%(n+1); return OK;void main()int i,m,s;printf(請輸入卡片數(shù)量s=);scanf(%d,&s);printf(卡片取出順序為:n);SqQueue *p= &Q; InitQueue(p); for(i=1;i=s;i+) EnQueue(p,i); while(Q.rear-1)%(n+1)!=Q.front%(n+1) DeQueue(p,m); kapian(p); printf(%4d,m);printf(n);二、題目:約瑟夫問題 等級C一、問題描述問題描述:有N個小孩圍成一圈,從第K個兒童從1開始依次報數(shù),直到數(shù)到M,數(shù)到M的同學出列,下一個同學再從1開始報數(shù)到M,依次循環(huán),直到最后剩下一個同學,問最后一個同學是誰。當n=50,k=12時,請按次序列出出列的同學序號。二、算法的基本思想首先設(shè)計實現(xiàn)約瑟夫環(huán)問題的存儲結(jié)構(gòu)。由于約瑟夫環(huán)問題本身具有循環(huán)性質(zhì),考慮利用循環(huán)鏈表。為了統(tǒng)一對表中任意結(jié)點的操作,循環(huán)鏈表不帶頭結(jié)點。其次,建立一個不帶頭結(jié)點的循環(huán)鏈表并由頭結(jié)點指示。最后,設(shè)計約瑟夫環(huán)問題的算法。1、 先定義一個結(jié)構(gòu)體存儲人員結(jié)點類型和結(jié)點指針類型。再設(shè)計約瑟夫環(huán)問題的算法。2、 以無頭結(jié)點的單循環(huán)鏈表為存儲結(jié)構(gòu)模擬此過程。3、 判斷輸入的總?cè)藬?shù)n是否大于0,是就執(zhí)行下一步,否則返回main()函數(shù)。4、 創(chuàng)建新結(jié)點,對線性表初始化,并賦值1到n,令最后一個結(jié)點指向第1個結(jié)點。5、 循環(huán)求得前n-1個出隊結(jié)點,輸出其人員編號,并刪除結(jié)點。6、 輸出最后一個人員編號,并刪除最后一個結(jié)點。7、 最后編寫main()函數(shù)。三、測試數(shù)據(jù)四、源程序#include#define N 100struct child int no; int next;struct child linkN;void main() int i,n,m,s,count,h;/定義變量 printf(輸入圍圈人數(shù),出圈報數(shù),開始報數(shù)位置:); scanf(%d,%d,%d,&n,&m,&s);/n是總?cè)藬?shù),m是出圈號,s是初始報數(shù)位置。 for(i=1;i=n;i+) if(i=n)linki.next=1;/圍成一圈, else linki.next=i+1; linki.no=i; count=0; if(s=1)h=n; else h=s-1; /如果從1號開始報數(shù),1號的前一位是n號。如果從s開始報數(shù),s的前一位是s-1號。 printf(出圈順序為:n); while(countn-1)/count是圈外人數(shù),當count=n-1時,不再執(zhí)行while循環(huán),圈內(nèi)還剩下一人。 i=0; while(i!=m) h=linkh.next; if(linkh.no)/判斷當前號的值是否已置0, i+; printf(%4d,linkh.no);/依次輸出出圈的人的編號 linkh.no=0; count+; printf(n最后出圈的人的編號:); for(i=1;i=n;i+)/最后出圈的人的編號 if(linki.no!=0) printf(%dn,linki.no);三、題目:數(shù)組效率問題 等級C一、問題描述問題描述:一個整形數(shù)組int a100 保存1-100 現(xiàn)在隨機將其中兩個數(shù)改為0, 找出這兩個數(shù),要求時間和空間復(fù)雜度盡量小。二、算法的基本思想1、先對數(shù)組進行順序賦值2、然后使用srand(time(NULL)取出隨機的兩個數(shù)字,并對取出的數(shù)值置為0.3、對數(shù)組中的數(shù)字進行排序4、利用相鄰數(shù)字的數(shù)字差可求出隨機取出的數(shù)字。5、最后輸出取出的數(shù)字。三、測試數(shù)據(jù)四、源程序#include#include#includeusing namespace std;int main()srand(time(NULL);int a100,j;for(j=0;j=99;j+)aj=j+1;int k1 = rand()%100;int k2 = rand()%100;while(k1 = k2)k2 = rand()%100;cout刪除的數(shù)字為:ak1,ak2endl;ak1 = 0;ak2 = 0;sort(a, a+100);if(a99 != 100)cout100endl;if(a99 != 100 & a98 = 99)cout99endl;cout通過查找出被刪除的數(shù)字為:endl;for(int i = 0; i =100; i+)if(ai+1 - ai=3)coutai+1-1endl;coutai+1-2endl;break;else if (ai+1 - ai = 2)coutai+1-1n時,表示算法已搜索至一個葉結(jié)點,得到一個新的郵票面值設(shè)計方案x1:n。如果該方案能貼出的最大連續(xù)郵資區(qū)間大于當前已找到的最大連續(xù)郵資區(qū)間maxvalue,則更新當前最優(yōu)值maxvalue和相應(yīng)的最優(yōu)解bestx。當i=n時,當前擴展結(jié)點Z是解空間中的一個內(nèi)部結(jié)點。在該結(jié)點處x1:i-1能貼出的最大連續(xù)郵資區(qū)間為r-1。因此,在結(jié)點Z處,xi的可取值范圍是xi-1+1:r,從而,結(jié)點Z有r-xi-1個兒子結(jié)點。算法對當前擴展結(jié)點Z的每一個兒子結(jié)點,以深度優(yōu)先的方式遞歸的對相應(yīng)的子樹進行搜索。三、測試數(shù)據(jù)四、源程序#include using namespace std; class Stamp friend int MaxStamp(int ,int ,int ); private: int Bound(int i); void Backtrack(int i,int r); int n;/郵票面值數(shù)int m;/每張信封最多允許貼的郵票數(shù)int maxvalue;/當前最優(yōu)值int maxint;/大整數(shù)int maxl;/郵資上界int *x;/當前解int *y;/貼出各種郵資所需最少郵票數(shù)int *bestx;/當前最優(yōu)解; void Stamp:Backtrack(int i,int r) for(int j=0;j=xi-2*(m-1);j+) if(yjm) for(int k=1;k=m-yj;k+) if(yj+kyj+xi-1*k) yj+xi-1*k=yj+k; while(yrn) if(r-1maxvalue) maxvalue=r-1; for(int j=1;j=n;j+) bestxj=xj; return; int *z=new intmaxl+1; for(int k=1;k=maxl;k+) zk=yk; for(j=xi-1+1;j=r;j+) xi=j; Backtrack(i+1,r); for(int k=1;k=maxl;k+) yk=zk; delete z; int MaxStamp(int n,int m,int bestx) Stamp X; int maxint=32767; int maxl=1500; X.n=n; X.m=m; X.maxvalue=0; X.maxint=maxint; X.maxl=maxl; X.bestx=bestx; X.x=new int n+1; X.y=new int maxl+1; for(int i=0;i=n;i+) X.xi=0; for(i=1;i=maxl;i+) X.yi=maxint; X.x1=1;X.y0=0; X.Backtrack(2,1); cout當前最優(yōu)解:; for(i=1;i=n;i+)
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)品宣傳服務(wù)協(xié)議合同
- 土方買賣合同協(xié)議書
- 勞務(wù)派遣與工廠簽合同
- 手房賣買定金合同
- 南京住宅租賃合同
- 綠化養(yǎng)護合同范本
- 轎車租給公司合同范本
- 攝像儀維修合同范本
- 露營免責協(xié)議合同范本
- 借錢分期還款合同范本
- 2025年江蘇省南通市海安市十三校中考一模數(shù)學試題(原卷版+解析版)
- 《人工智能通識基礎(chǔ)》全套教學課件
- 2025年上半年江蘇省蘇州市東太湖度假區(qū)(太湖新城)單位招聘7人易考易錯模擬試題(共500題)試卷后附參考答案
- 2024年青海省西寧市中考一模物理、化學試卷-初中化學(原卷版)
- 專題01-平衡力與相互作用力(學生版)-2021年中考物理力學提優(yōu)特訓專題
- DB42∕T 676-2010 湖北省柑橘標準園建設(shè)規(guī)范
- 環(huán)境監(jiān)測課件50張
- 2025年吉林鐵道職業(yè)技術(shù)學院單招職業(yè)技能測試題庫完整
- 高考復(fù)習專題練習專題20函數(shù)的基本性質(zhì)小題(單調(diào)性、奇偶性、周期性、對稱性)(學生版+解析)
- 機器學習(山東聯(lián)盟)知到智慧樹章節(jié)測試課后答案2024年秋山東財經(jīng)大學
- 2025年江蘇省高職單招《職測》高頻必練考試題(附答案)
評論
0/150
提交評論