2020年计算机算法设计与分析课程设计常规题目的C及C代码集.pdf
《2020年计算机算法设计与分析课程设计常规题目的C及C代码集.pdf》由会员分享,可在线阅读,更多相关《2020年计算机算法设计与分析课程设计常规题目的C及C代码集.pdf(120页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机算法设计与分析课程设计常规题目的C及C代码集文档仅供参考,不当之处,请联系改正。合并排序1:#includeusing namespace std;const int N=100;class list(public:int arrayN;void input(int a);void merge(int arrayc,int arrayd,intl,int m,int r);void mergepass(int arrayx,intarrayy,int s);void mergesort(int arrayl);void diaplay(int a););void list:input(i
2、nt a)(coutMPlease input shorted array:nendl;for(int i=0;ia;i+)cinarrayi;)文档仅供参考,不当之处,请联系改正。void list:merge(int arrayc,int arrayd,int l,intm,int r)(int i=l;int j=m+l;int k=l;while(i=m)&(j=r)if(arraycim)for(int q=j;q=r;q+)arraydk+=arraycq;elsefor(int q=i;q=m;q+)arraydk+=arraycq;)void list:mergepass(in
3、t arrayx,int arrayy,ints)int i=0;while(i=N-2*s)文档仅供参考,不当之处,请联系改正。merge(arrayx,arrayy,i,i+s-l,i+2*s-l);i=i+2*s;)if(i+s)N)merge(arrayx,arrayy,i,i+s-l,N-l);elsefor(int j=i;jN;j+)arrayyj=arrayxj;)void list:mergesort(int array 1)(int array2N;int s=l;while(sN)(mergepass(arrayl,array2,s);s+=s;mergepass(arr
4、ay 2,array 1,s);)s+=s;)文档仅供参考,不当之处,请联系改正。void list:diaplay(int a)(for(int i=N-a;iN;i+)coutarrayi;)void main()(list f;int a;coutvv”请输入要合并排序的数组大小:(数组最大上限100)”vveii祖;cina;f.input(a);f.mergesort(f.array);f.diaplay(a);)合并排序:2#include usingnamespace std;void MERGES(int*A,int p,int q,int r)下标文档仅供参考,不当之处,请联
5、系改正。P=qrint nl=q-p+l;/nl:p,q之间的数的个数int n2=r-q;/n2:q 以后到r 的数的个数int*L=newint nl+1,动态申请两个子数组*R=newint n2+l;int i,j,k;for(i=0;inl;i+)(Li=Ap+i-l;)for(j=0;jn2;j+)(Rj=Aq+j;)Lnl=10000;设置哨兵Rn2=10000;i=0;j=0;for(k=p-l;kr;k+)文档仅供参考,不当之处,请联系改正。if(Li=Rj)(Ak=Li;i=i+l;)else(Ak=RU;j=j+l;)void MERGESORT(int*A,int p,
6、int r)(if(Pr)(int q=(p+r)/2;MERGESORT(A,p,q);MERGESORT(A,q+l,r);MERGES(A,p,q,r);)文档仅供参考,不当之处,请联系改正。void main()int x,z,p,r;cout”请输入数组长度 v Vendl;cinx;int*A=newintx;cout 请输入数组的元素 vvendl;for(int y=0;yx;y+)(cinz;Ay=z;)coutvv”请输入上下限p,rnendl;cinpr;MERGESORT(A,p,r);cout 合并排序后为:vVendl;for(int m=p;m=r;m+)(cou
7、tAm;)delete A;)文档仅供参考,不当之处,请联系改正。合并排序3:#include#include 这个函数将 b0至bright eft+l拷贝到 至 arighttemplate void Copy(T a,T b,int left,int right)(int size=right-left+l;for(int i=0;isize;i+)(aleft+=bi;)这 个 函 数 合 并 有 序 数 组到 b,得到新的有序数组btemplate void Merge(T a,T b,int left,int i,int right)(int alcout=leftj/指向第一个数
8、组开头alend=i指向第一个数组结尾a2cout=i+l,指向第二个数组开头a2end=right,指向第二个数组结尾文档仅供参考,不当之处,请联系改正。bcout=0;指向b 中的元素for(int j=0;j alend)(bbcout+=aa2cout+;continue;如果第一个数组结束,拷贝第二个数组的元素到bif(a2couta2end)(bbcout+=aalcout+;continue;如果第二个数组结束,拷贝第一个数组的元素到bif(aalcoutaa2cout)(bbcout+=aalcout+;continue;如果两个数组都没结束,比较元素大小,把较小的放入b文档仅
9、供参考,不当之处,请联系改正。elsebbcout+=aa2cout+;continue;)对 数 组 right进行合并排序template void MergeSort(T a,int left,int right)(T*b=new intright-left+l;if(leftright)(int i=(left+right)/2;取中点MergeSort(a,left,i);左半边进行合并排序MergeSort(a,i+l,right);右半边进行合并排序Merge(a,b,Ieft,i,right);左右合并到 b 中Copy(a,b,left,right);/A b 拷贝回来)/f
10、romint main()文档仅供参考,不当之处,请联系改正。int n;coutnhow many numbers to sort:;cinn;int*a=new intn;coutninput n n n numbers:n;for(int i=0;in;i+)(cinai;)MergeSort(a,0,n-1);for(int j=O;jn;j+)(coutsetw(5)aj;)return 1;)合并排序4:#include using namespace std;void Merge(int a,int b,int l,int m,int r)文档仅供参考,不当之处,请联系改正。in
11、t i=I,j=m+l,k=l;while(i=m)&(j=r)if(aim)for(int q=j;q=r;q+)bk+=aq;elsefor(int q=i;q=m;q+)bk+=aq;)void Copy(int a,int b,int s,int n)(for(int i=s;i=n;i+)ai=bi;)void MergeSort(int a,int left,int right)(int i;if(leftright)文档仅供参考,不当之处,请联系改正。i=(left+right)/2;intb100;MergeSort(a,left,i);MergeSort(a,i+l,righ
12、t);Merge(a,b,left,i,right);Copy(a,b,left,right);)int main()(int a100;int n,i;coutvv”输入元素个数n:u;cinn;coutvv”输入一维数组 an n n:n;for(i=0;in;i+)cinai;MergeSort(a,0,n-l);coutvv”输出排序为:“;for(i=0;in;i+)coutai,coutendl;文档仅供参考,不当之处,请联系改正。return 0;)矩阵相乘1:#include#include using namespace std;int main()(int i,j,k;co
13、utvv”输入二维数组a 的行数和二维数组c的行数x:n;int x;cinx;coutvv”输入二维数组a 的列数和二维数组b的行数y:n;inty;ciny;coutvv”输入二维数组b 的列数和二维数组c的行数Z:”;int z;cinz;文档仅供参考,不当之处,请联系改正。int*a,*b,*c;a=new int*x;for(i=0;ix;i+)(ai=new inty;)coutvv”输入二维数组 a:Hendl;for(i=0;ix;i+)(for(j=0;jy;j+)(cinaij;)b=new int*y;for(i=0;iy;i+)(bi=new int z;)coutvv
14、”输入二维数组 b:nendl;for(i=0;iy;i+)文档仅供参考,不当之处,请联系改正。for(j=0;jz;j+)(cinbij;)c=new int*x;for(i=0;ix;i+)(ci=new int z;)coutvv”输入二维数组 c:nendl;for(i=0;ix;i+)(for(j=0;jz;j+)(ciU=0;)for(i=0;ix;i+)for(j=0;jz;j+)文档仅供参考,不当之处,请联系改正。for(k=0;ky;k+)(cij+=aik*bkj;)for(i=0;ix;i+)(for(j=0;jz;j+)(coutvvcijvv,;)coutendl;)
15、for(i=0;ix;i+)(delete ai;)delete a;for(i=0;ix;i+)delete ci;文档仅供参考,不当之处,请联系改正。)delete c;for(i=0;iy;i+)(delete bi;)delete b;return 0;)矩阵相乘2:#includeusing namespace std;#define M 2#define N 3#define P 4int main()(int aMN=l,2,3,4,5,6);intbNP=7,8,9,2,3,4,5,6,7,8,9;int cMP;int i,j,k;文档仅供参考,不当之处,请联系改正。for(
16、i=0;iM;i+)for(j=0;jP;j+)cij=O;for(i=0;iM;i+)for(j=0;jP;j+)for(k=0;kN;k+)cij+=aik*bkj;cout n矩阵相乘结果是:vVendl;for(i=0;iM;i+)for(j=0;jP;j+)coutcijn n;coutendl;/system(n pause);return 0;)矩阵相乘3:#include#include using namespace std;int main()const int m=3;文档仅供参考,不当之处,请联系改正。const int n=3;intamn,i,j;初始化数组 a,b
17、for(i=0;ivm;i+)对数组a 赋值并显示(for(j=O;jn;j+)(coutnan i nnnn j n=n;cinaij;)for(i=0;im;i+)(for(j=O;jn;j+)coutsetw(4)ai j;coutendl;)const int k=3;const int h=2;int bkh,x,y;for(x=0;xk;x+)for(y=0;yh;y+)文档仅供参考,不当之处,请联系改正。cou tnbn x nnnn y n=n;cinbxy;)for(x=O;xk;x+)(for(y=O;yh;y+)coutsetw(4)b x y;coutendl;)int
18、 cmh;/乘赋值给数组cfor(int r=O;rm;r+)(for(int t=O;th;t+)数组 a 与 b 相对数 组b赋值并显示(crt=O;for(int s=O;sk;s+)(crt+=ars*bst;)文档仅供参考,不当之处,请联系改正。)cou tncn m nnnn h nHendI;for(int z=O;zm;z+)(for(int w=O;wh;w+)coutsetw(4)cz w;coutendl;)return 0;显示数组c)矩阵相乘4:#includeusing namespace std;void chain(int*p,int n,int m7,mt s
19、7)/p 维数数组,m最优乘次数组,s记录划分方案(intj;for(int i=l;i=n;i+)mii=0;for(int r=2;r=n;r+)文档仅供参考,不当之处,请联系改正。for(i=l;i=n-r+l;i+)(j=i+r-l;mij=mi+lj+pi-l*pi*pj;sij=i;for(int k=i+l;kj;k+)(intt=mik+mk+lj+pi-l*pk*pj;if(t=i;j-)文档仅供参考,不当之处,请联系改正。coutm ijM;)coutendl;)void Traceback(int i,int j,int s口 7)输出相乘方案(if(i=j)return
20、;Traceback(i,sij,s);Traceback(sij+l,j,s);cout HMultiply An i n,nsij;coutand B(sij+l)n,H j en d l;return;)int main()(intp7,m77,s77,n;while(n!=EOF)for(int i=0;i=n;i+)文档仅供参考,不当之处,请联系改正。cinpiendl;)chain(p,n,m,s);Traceback(l,6,s);)return 0;)Haffman 编码 1:#include#includeusing namespace std;typedef struct(
21、int weight;int flag;int parent;int lehild;int rchild;)hnodetype;文档仅供参考,不当之处,请联系改正。typedef struct(int bit10;int start;char leaf;)hcodetype;void huf(char cha,int m,mt n)(int i,j,ml,m2,xl,x2,c,p;hnodetype*huffnode=new hnodetype2*n-l;hcodetype*huffcode=new hcodetypen,cd;for(i=0;i2*n-l;i+)(huffnodei.weig
22、ht=0;huffnodei.parent=0;huffnodei.flag=0;huffnodei.lchild=-l;huffnodei.rchild=-l;)for(i=0;in;i+)文档仅供参考,不当之处,请联系改正。huffnodei.weight=mi;huffcodei.leaf=chai;)for(i=0;in-l;i+)(ml=m2=10000000;xl=x2=0;for(j=0;jn+i;j+)(if(huffnodej.weight=ml&huffnodej.flag=0)(m2=ml;x2=xl;ml=huffnodej.weight;xl=j;)elseif(hu
23、ffnodej.weight=m2&huffnodej.flag=0)文档仅供参考,不当之处,请联系改正。m2=huffnodej.weight;x2=j;)huffnodexl.parent=n+i;huffnodex2.parent=n+i;huffnodexl.flag=l;huffnodex2.flag=l;huffnoden+i.weight=huffnodexl.weight+huffnodex2.weight;huffnoden+i.lchild=xl;huffnoden+i.rchild=x2;)for(i=0;in;i+)(cd.start=n-l;c=i;p=huffnod
24、ec.parent;while(p!=O)if(huffnodep.lchild=c)文档仅供参考,不当之处,请联系改正。cd.bitcd.start=O;elsecd.bitcd.start=l;cd.start;c=p;p=huffnodec.parent;)couthuffcodei.leaffor(j=cd.start+l;jn;j+)(huffcodei.bitj=cd.bitj;coutcd.bitj;)coutendl;huffcodei.start=cd.start;)delete huffcode;delete huffnode;)void main()string str;
25、文档仅供参考,不当之处,请联系改正。int i=0,j,n,m100,h,k=0;char cha100;coutvv”请输入一个字符串nendl;cinstr;n=str.length();coutn字 符 串 总 共 有 字 符n n n个nendl;for(i=0;in;i+)(j=0;h=0;while(stri!=strj)j+;(chak=stri;cout 字符 chak 出现;)else continue;for(j=i;jn;j+)if(stri=strj)h+;文档仅供参考,不当之处,请联系改正。)couth 次v vendl;mk=h;k+;)coutvv”每个字符的哈夫
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2020 计算机 算法 设计 分析 课程设计 常规 题目 代码
限制150内