版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、算法设计与分析实验报告实验项目(一) 基础算法设计专业、班级学号姓名实验时间实验地点指导教师教学目标使学生掌握“算法设计与分析”中的基本原理、基本技术和方法,提升计算机问题求解的水平。熟练掌握编程中常见问题的求解策略,培养学生对算法复杂性进行正确分析的能力。(1) 掌握编程求解问题的常用算法策略。(2) 熟练强化深入计算机求解问题的过程。(3) 增强理论结合实际能力,增强获得理论联系实际问题的能力。(4) 培养系统分析能力和团队协作能力。一、 实验目的及要求(1) 练习算法基本工具和优化技巧的使用;(2) 巩固和掌握算法的常用基本技巧。二、 实验设备(环境)及要求使用C/C+语言,Visual
2、 Studio 201X开发环境,Windows系列操作系统环境三、 成绩评定题号题型能力分值成绩备注设计题设计分析10设计题设计分析20设计题设计分析20设计题解决问题20设计题解决问题20报告格式10总成绩四、 实验内容与步骤1、 广场上有一队士兵,如果排成10 列纵队,最后剩下a 个人(0 a 9);如果排成9 列纵队,最后剩下b 个人(0 b 8);如果排成8 列纵队,最后剩下c 个人(0 c 7)如果排成2 列纵队,最后剩下j 个人(0 j 1),计算并输出广场上士兵的最少可能人数,分别用蛮力法和数学建模方法求解。提示:数学建模方法参见“中国剩余定理”。蛮力法:#includeusi
3、ng namespace std;int main()int i = 19;while (true)if (i % 10 = 9 & i % 9 = 8 & i % 8 = 7 & i % 7 = 6 & i % 6 = 5 & i % 5 = = 4 & i % 4 = = 3 & i % 3 = 2 & i % 2 = 1)cout This number is : i endl;break;i+;2、 给定一个正整数n,输出如下 n n “之字形”方阵。例: 8 8 方阵。选作:输入任意的两个正整数m 和n(m n),构造m n “之字形”矩阵,以下示例为3 5 矩阵:#includeu
4、sing namespace std;void main()int n,i,j,m,k;int a100100=0;coutn;k=0; /标记i=0,j=0;m=1;a00=m;while(mn*n)switch(k)case 0: /向右或向下if(i+jn-1)j+;m+;aij=m;k=(k+1)%4;elsei+;m+;aij=m;k=(k+1)%4;break;case 1: /向左下while(i+1=0)i+,j-;m+;aij=m;k=(k+1)%4;break;case 2: /向下或向右if(i+j=0&j+1n)i-,j+;m+;aij=m;k=(k+1)%4;brea
5、k;for(i=0;in;i+)for(j=0;jn;j+)printf(%5d,aij);coutendl;3、 用1、2、3、4、5、6、7、8、9这9 个数字,填入 中使等式 = 成立,每个数字恰好只用一次。u 以下是所有的7 个答案供参考:12 483 = 5796、18 297 = 5346、27 198 = 5346、28 157 = 4396、39 186 = 7254、42 138 = 5796、48 159 = 7632。#include#includebool go(int x, bool map)while (x)if (mapx % 10) return false;m
6、apx % 10 = true;x /= 10;return true;bool check(int x, int y, int z)bool map10;if (z 9999) return false;memset(map, 0, sizeof(map); map0 = true;return go(x, map) & go(y, map) & go(z, map);int main()for (int x = 10; x= 98; x+)for (int y = 102; y= 987; y+)int z = x * y;if (check(x, y, z) printf(%d * %d
7、 = %dn, x, y, z);return 0;4、 给定一个正整数n,计算有多少个不同的连续自然数段,其中自然数的个数至少为2,其和恰为n。u 例如,当n = 27时,有3 个不同的长度大于等于2 的连续自然数段的和恰为27:2 + 3 + 4 + 5 + 6 + 7、8 + 9 + 10、13 + 14;而单独的27 则不算。#include#includeusing namespace std;void Print(int a,int b,int n) /打印连续的a到bwhile(ab)couta+;a+;coutb=nendl; void main()int a,n;double
8、 b;coutn;for(a=1;a=n/2;a+)b=(-1.0+sqrt(1.0-4.0*(a-a*a-2.0*n)/2.0; if(b=int(b) /判断b是否为整数Print(a,b,n);5、 一个整数n(n 30)可以有多种分划,分划的整数之和为n,在不区分分划出各整数的次序时,字典序递减输出n 的各详细分划方案和分划总数。u 例如n = 6,程序输出为:65 14 24 1 13 33 2 13 1 1 12 2 22 2 1 12 1 1 1 11 1 1 1 1 1total = 11#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;int a35,total=0,n;void output(int m)printf(%d=,n);for(int i=1;i=m-1;i+)printf(%d+,ai);printf(%dn,am);total+;return ;void dfs(int k,int m)int i,j;for
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论