2020年计算机算法设计与分析课程设计常规题目的C及C代码集.docx
《2020年计算机算法设计与分析课程设计常规题目的C及C代码集.docx》由会员分享,可在线阅读,更多相关《2020年计算机算法设计与分析课程设计常规题目的C及C代码集.docx(138页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机算法设计与分析课程设计常规 题目的C及C代码集#includeusing namespace std;const int N=100;class list(public:int arrayN;void input(int a);void merge(int arrayc,int arrayd,int l,int m,int r);void mergepass(int arrayx,int arrayy,int s);void mergesort(int arrayl);void diaplay(int a););void list:input(int a)coutnPlease inpu
2、t shorted array:Hendl;for(int i=0;ia;i+)cinarrayi;)void list:merge(int arrayc,int arrayd,int l,int m,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(int arrayx,int arrayy,ints)int i=0;while(
3、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,array y,i,i+s-1 ,N-1);elsefor(int j=i;jN;j+) arrayyj=arrayxj;)void list: :mergesort(int array 1)(int array2N;int s=l;while(sN)(mergepass(array 1,array 2,s);s+=s;mergepass(array2,arrayl,s);s+=s;)void list:diaplay(int a)for(in
4、t i=N-a;iN;i+) coutarrayi;)void main()(list f;int a;COUtV请输入要合并排序的数组大小:(数 组最大上限100)”vvendl;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) 下标P=qrint nl=q-p+l; /nl:p,q之间的数的个数int n2=r-q; /n2: q以后到r的数的个数int *L=newint nl+1,动态申请两
5、个子数组*R=newint n2+l;int ij,k;for (i=0;inl;i+)Li=Ap+i-l;)for (j=0;jn2;j+)RLj=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=Rj;j=j+l;void MERGESORT(int *A,int p,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
6、,r;coutvv”请输入数组长度” vvendl;cinx;int *A= newintx;coutv v ”请输入数组的元素“v vendl;for(int y=0;yx;y+)(cinz;Ay=z;)coutvv”请输入上下限p, rMendl;cinpr;MERGESORT(A,p,r);coutvv ”合并排序后为:vVendl;for (int m=p;m=r;m+)coutAm;delete A;合并排序3:#include #include 这个函数将 b至 bright-Ieft+l拷贝到 aleft至 arighttemplate void Copy(T a,T b,int
7、 left,int right)(int size=right-left+l;for(int i=O;isize;i+)(aleft+=bi;) 这个函数合并有序数组aleft:i,ai+l:right到b,得到新的有序数组b template void Merge(T a,T b,int left,int i,int right)int alcout=left指向第一个数组开头 alend=i指向第一个数组结尾 a2colit=i+l, 指向第二个数组开头 a2end=right, 指向第二个数组结尾bcout=0;指向b中的元素for(int j=O;jalend) bbcout+=aa2
8、cout+;continue;如果第一个数组结束,拷贝第二个数组的 元素到bif(a2couta2end)(bbcout+=aalcout+;continue;如果第二个数组结束,拷贝第一个数组的 元素到bif(aalcoutaa2cout)(bbcout+=aalcout+; continue;如果两个数组都没结束,比较元素大小, 把较小的放入belsebbcout+=aa2cout+; continue;)对数组aleft:right进行合并排序template void MergeSort(T a,int left,int right)T *b=new intright-left+l;i
9、f(leftright)(int i=(left+right)/2;取中点MergeSort(a,left,i); 左半边进行合并排序MergeSort(a,i+1,right); 右半边进行合并排序Merge(a,bjeft,i,righ;左右合并到 b 中 Copy(a,b,left,righ;从 b 拷贝回来 /fromint main()int n;coutnhow many numbers to sort:*;cinn;int *a=new intn;coutninput nn numbers:H;for(int i=0;in;i+)(cinai;)MergeSort( a, 0,
10、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 IJnt m,int r)int i=l,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
11、(int a,int left,int right)int i;if(leftright)i=(left+right)/2;intb100;MergeSort(a,left,i);MergeSort(a,i+l,right);Merge(a,b,left,i,right);Copy(a,b,left,right);)int main()(int a100;int n,i;coutvv”输入元素个数n:M;cinn;coutvv”输入维数组 aHnH:M;for( i=0;in;i+)cinai;MergeSort(a,0,n-l);coutvv”输出排序为:;for (i=0;in;i+)co
12、utai* *;coutendl;return 0;矩阵相乘1:#include #include using namespace std;int main()int i,j, k;coutvv”输入二维数组a的行数和二维数组c 的行数X:;int x;cinx;coutv输入二维数组a的列数和二维数组b 的行数y:;int y;ciny;coutv输入二维数组b的列数和二维数组C 的行数Z:;int z;cinz;endl;endl;a=new int*x;for(i=0;ix;i+)(ai=new inty;coutvv”输入二维数组a:for(i=0;ix;i+)(for(j=0;jy;
13、j+)(cinaij;)b=new int*y;for(i=0;iy;i+)(bi=new int z;)coutvv”输入二维数组b: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+)cij=O;)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+)(coutcij, *
14、;coutendl;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,l,2,3,4,5,6,7,8,9);int cMP;int ij,k;for(i=0;iM;i+)for(j=0;jP;j+)ciU=
15、O;for(i=0;iM;i+)for(j=0;jP;j+)for(k=0;kN;k+)cij+=aik*bkj;coutvv”矩阵相乘结果是:Mendl;for(i=0;iM;i+)for(j=0;jP;j+) coutcijn H;coutendl;/sy stem( * * pause * *);return 0;矩阵相乘3:#include #include using namespace std;int main()const int m=3;const int n=3;int初始化数组 a,bfor(i=0;ivm;i+) 对数组a赋值并显示(for( j=O;jn;j+)cout
16、naniHnnnjn=H; cinaij;)for( i=0;im;i+)(for( j=O;jn;j+)coutsetw(4)aij;coutendl;)const int k=3;const int h=2;int bkh,x,y;for( x=0;xk;x+)for( y=0;yh;y+)coutnbnxnnHnyH=H; cinbxy;)for( x=O;xk;x+)(for( y=O;yh;y+)coutsetw(4)bxy;coutendl;int乘赋值给数组cfor(int r=O;rm;r+)for(int t=O;th;t+) 数组 a 与 b 相对 数组b赋值并显示(crt
17、=O;for(int s=O;sk;s+)crt+=ars*bst;coutnc,mH,nHhnnendl;for(int z=O;zm;z+)(for(int w=O;wh;w+)coutsetw(4)cz w;coutendl;return ;显示数组c矩阵相乘4:#includeusing namespace std;void chain(int*p,int n,int m7,int s7)/p 维数数组,m最优乘次数组,s记录划分方案int j;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
18、-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-)coutmijM;coutendl;void Traceback(int ijnt j,int s7)输出相乘方if(i=j)return;Traceback(i,sij,s);Traceback(si j+lj,s);coutvvMultiply Ai,sij;coutand B(sij+l),jendl;return;)int main()int p7,m77,s77,n;while(n!=EOF)for(int i=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2020 计算机 算法 设计 分析 课程设计 常规 题目 代码
限制150内