




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【例题7】游戏问题: 12个小朋友手拉手站成一个圆圈,从某一个小朋友开始报数,报到7的那个小朋友退到圈外,然后他的下一位重新报“1”。这样继续下去,直到最后只剩下一个小朋友,求解这个小朋友原来站在什么位置上呢?,3.2.3 数组记录状态信息,在个人计算机中,对超过长整型的多位数操作时,只能借助于数组才能精确存储及计算。 (1)使用字符数组存储输入的高精度数,每个数组元素对应一个数字。 【例题8】高精度数据*长整数,3.2.4 大整数存储及运算,(2)使用数组存储输出的高精度数,每个数组元素存储多位数字。 【例题9】编程求N!的准确值。N=100(每个数组元素存储6位数字) (1)存储结果需要的数组长度 事先估计(长度=log(n)*n/6+2) 边计算边统计 (2)结果的输出,3.2.4 大整数存储及运算,矩阵:用二维数组存储 问题:趣味矩阵中字符或数据的规律很容易发现,但是按规律直接输出却不容易。 解决方法:设计算法将数据先存储到二维数组中,最后输出二维数组的内容。,3.2.5 构造趣味矩阵,3.2.5 构造趣味矩阵,3)用i代表行下标,以j代表列下标,则对n*n矩阵有以下常识: 主对角线元素i= =j; 副对角线元素: 下标下界为1时 i+j= =n+1, 下标下界为0时i+j= =n-1; 主上三角元素: i =j; 次上三角元素:下标下界为1时i +j=n+1, 下标下界为0时i+j=n-1;,【例题10】编程打印有如下规律的n*n方阵,3.2.4 大整数存储及运算,【例题11】螺旋阵:任意给定的n值,按如下螺旋的方式输出方阵,3.2.4 大整数存储及运算,3.2.5 构造趣味矩阵,【算法设计1】:四角元素分别归四个边 (1)此例可以按照“摆放”数据的过程,逐圈分别处理每圈的左侧、下方、右侧、上方的数据。 圈数:(n+1)/2 第i圈的处理过程: for( j=i;j=i+1;j=j-1) ajn+1-i=k;k=k+1; /右侧/ for( j= n-i+1;j=i+1;j=j-1) aij=k; k=k+1; /上方/,3.2.5 构造趣味矩阵,【算法设计2】:通过算术运算将4个方位的处理归结为一个循环完成,约定四角数据分别属于先处理的行或列。 一圈的情况为:,3.2.5 构造趣味矩阵,/n代表矩阵的规模,x代表填入的数据 int a100100; k=n; t=1; while(x=n*n) for(y=1;y=2*k-1;y+)/半圈 if(y=k)i+=t; else j+=t; aij=x; x+; t=-t; k-; ,int b2;/b0代表i,b1代表j,by/(k+1)+=t; ab0b1=x;,【例题12】打印魔方阵(奇数魔方阵),3.2.4 大整数存储及运算,3.2.5 构造趣味矩阵,【算法设计】规则描述如下: (1)首先将1填在方阵第一行的中间。 (2)下一个数填在上一个数的主对角线的上方,即若上一个数的位置是(i,j),下一个数应填在(i-1,j-1)。 (3)若应填写的位置下标出界,则出界的值用n 来替代; (4)若应填的位置虽然没有出界,但是已经填有数据的话,则应填在上一个数的下面(行加1,列不变),即取i1=i+1,j1=j。 直到把n*n个数全部填入方阵中。,3.2.5 构造趣味矩阵,Input(n); while(n%2=0)printf(“error!”,input(n); i=1; j=(n+1)/2; x=1; While(x=n*n) aij=x; m=i; n=j; i-;j-; if(i=0)i=n; if(j=0)j=n; if(aij!=0)i=m+1;j=n; ,3.2.6 一维与二维的选择,在有些应用中,原始数据表面上看是一维信息,但使用二维数组存储有关信息后,更容易设计算法。 【例题13】统计问题:找出链环数字对的出现的次数 输入n(2n100)个数字(即09之间的数据),然后统计出这组数中相邻两数字组成的链环数字对出现的次数。 例如: 输入:n=20 0 1 5 9 8 7 2 2 2 3 2 7 8 7 8 7 9 6 5 9 输出:(7,8)=2 (8,7)=3 (7,2)=1 (2,7)=1 (2,2)=2 (2,3)=1 (3,2)=1,3.2.6 一维与二维的选择,实现 (1)使用一维数组存储计数: 将相邻的两个数转换成一维数组的下标:x=m*10+j;ax+ 将一维数组下标转换成对应的数对: m=i/10 n=i%10 if(m*10+n)!=0 &(n*10+m)!=0 (2)使用二维数组存储计数: am,n+,3.2.6 一维与二维的选择,【例题14】有3n个花盆,红、黄、蓝各有n个。开始排列的顺序是混乱的。请编写一程序将各花盆按照红、黄、蓝的顺序排列。要求各花盆之间的交换次数最少 本例题属于约定排序的问题:目标是 将红送到3i-2的位置 将黄送到3i-1的位置 将蓝送到3i的位置 使用二维数组:一列是一种颜色(红、黄、蓝),3.2.6 一维与二维的选择,为保证交换次数最少: 第一列的黄与第二列的红交换 第一列的蓝与第三列的红交换 第二列的蓝与第三列的红交换 第一列的黄、第二列的蓝、第三列的红循环交换 第一列的蓝、第二列的红、第三列的黄循环交换,3.3 优化算法的基本技巧,算术运算的妙用:通过恰当的算术运算可以很好地提高编程效率,以及相关算法的编程效率。 【例题15】一次考试,共考了五门课。统计五十个学生中至 少有三门课成绩高于90分的人数。 算法设计: 1)对每个同学,先计算其成绩高于90分的课程数目,若超过3,则累加满足条件的人数中。 2)用二重循环实现以上过程,外层循环模拟50个同学,内层循环模拟5门课程,3.3 优化算法的基本技巧,【例题16】开灯问题:有从1到n依次编号的n个同学和n 盏灯。1号同学将所有的灯都关掉;2号同学将编号为2的倍数的灯都打开;3号同学则将编号为3的倍数的灯作相反处理(该号灯如打开的,则关掉;如关闭的,则打开);以后的同学都将自己编号的倍数的灯,作相反处理。问经n个同学操作后,哪些灯是打开的?,3.3 优化算法的基本技巧,问题分析: 1)用数组表示某种状态,这里定义有n个元素的数组a ,它 的每个下标变量ai视为一灯,i表示其编号。ai=1 表示灯处于打开状态,ai=0表示灯处于关闭状态。 2)实现将第i 灯作相反处理的操作,可以用条件语句if表 示:if(ai=1) ai=0; else ai=1; 但通过以下算术运算:ai=1-ai;就很好地模拟“开关”灯的操作。,3.3 优化算法的基本技巧,【例题17】右图中所示的圆圈中,我们把相隔一个数据的两个数(如1和10,3和5,3和6)称作是“一对数”,试编程求出乘积最大的一对数和乘积最小的一对数。输出格式如下: max=?*?=? min=?*?=?,3.3 优化算法的基本技巧,标志量的妙用:使用标志量表示不同情况或状态。 【例题18】冒泡排序算法的改进。 【例题20】输入3个数值,判断以它们为边长是否能构成三角形。若能构成三角形,请指出是那种三角形。 【例题21】编写算法,求任意三个数的最小公倍数,3.3 优化算法的基本技巧,信息数字化:本节就一些表面上看是非数值,但经过数字化后,就可方便进行算法设计。 【例题22】警察局抓了a,b,c,d四名偷窃嫌疑犯,其中只有一人是小偷。审问中 a说:“我不是小偷。” b说:“c是小偷。” c说:“小偷肯定是d。” d说:“c在冤枉人。” 现在已经知道四个人中三人说的是真话,一人说的是假
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 食堂用工协议书范本
- 非固定投资合同协议
- 陈述保险合同协议模板
- 露营装备铺货合同协议
- 项目回购协议书范本
- 2025重庆市公共租赁住房租赁合同
- 青岛车位转让合同协议
- 2025代理销售合同
- 长途殡葬车租赁合同协议
- 门店装修预算合同协议
- 股东出资协议书(公司未成立之前注册股期股回购)
- 21 青蛙卖泥塘(一等奖创新教案)
- 上海市高中学业水平考试之物理实验操作考试(完整版)
- 机动车维修竣工出厂合格证样式
- GB/T 36447-2018多媒体教学环境设计要求
- GB/T 14832-2008标准弹性体材料与液压液体的相容性试验
- 内镜下逆行阑尾炎治疗术
- SJG 82-2020 政府投资学校建筑室内装修材料空气污染控制标准-高清现行
- 《脂蛋白(a)与心血管疾病风险关系及临床管理的专家科学建议》(2021)要点汇总
- 2004年武汉房地产市场情况分析报告(共23页)
- 肿瘤化学治疗
评论
0/150
提交评论