数据结构实习报告(共8篇)

更新时间:2023-05-12 09:59:15 阅读: 评论:0

数据结构实习报告(共8篇)
数据结构实习报告(共8篇)
第1篇:
数据结构实_报告附件:实_报告格式,如下:数据结构实_报告班级:姓名:xxx(1514)xxx(1514)xxx(1514)指导教师:日期:题目
一、问题描述(把你所选的题目及要求说一下)二、概要设计(抽象数据类型定义)三、详细设计(主要算法和函数间的调用关系)四、调试分析(调式过程中出现的问题及如何改正)五、心得体会(组内成员的分工及实_期间的体会)六、用户手册(系统的使用方法介绍)可参照_题集上的实_报告格式。
第2篇:
数据结构实_报告数据结构实_报告班级:13软件二班姓名:殷健学号:1345536225子集和数问题1:问题描述子集和数问题1:子集和问题的为W,c。其中,W=w1,w2,.,wn是一个正整数的集合,子集和数问题判定是否存在W的一个子集W1,使得
W1=cW(02:问题分析程序中设计了函数
voidputeSumofSub(ints,intk,intr),其意义是从
第k项开始,如果s(已经决策的和数)和wk(当前元素)之和为和数,就把结果输出来,否则如果s与,wk,wk+1之和小于和数,则调用puteSumofsub(s+wk,k+1,r-wk),意为选择此结点的
左分支,再判断s和后面所有元素之和是否不小于M(所有的加起来都小,必定无解),并且s+wk+1M,也是无解),若条件符合即调用puteSumofSub(s,k+1,r-wk),即选择当前结点的右分支。
算法展示:
#includeusingnamespacestd;#include#include#defineM50claSu mOfSubprivate:intwM;intm;intxM;public:SumOfSub(inta,intb, intn)for(inti=0;i=mvoidmain()intsum=0;intwM;srand(unsigne d)time(NULL);for(inti=0;icoutcoutcoutm;sum=m*sum;cout复杂性分析:对于不同的输入结果,算法的执行次数有所不同,最好情况是n,最坏情况是n*2n。尽管差异很大,但当n很大时,对某些输入而言,回溯法仍可在短时间内求解。
其它说明:按书中所讲的约束条件,程序中所有变量都是整型,输入的各元素要从小到大输入,而且不能有重复的元素。
若是想要无序输入,可以程序中加入程序1.c的归并排序算法,对输入的数组排序即可。
拓展一问题描述:子集和数问题拓展一:子集和问题的为
W,c,p。
其中,W=w1,w2,.,wn是一个正整数的集合,子集和数问题判定是否存在W的一个子集W1,使得W1=cW(0问题分析:增加一个数组p,使得p的每个元素与w对应元素关系为pi=Wi+10;最后结果W子集中元素个数越多,则p和最大,但也可以将每个符合条
件子集对应P集合的元素和计算出做个比较,然后输出最大的再对应原W子集。
算法演示
#includeusingnamespacestd;#include#include#defineM50claSu mOfSubprivate:intwM;intpM;intm;intxM;intNM;intmax;intj;pu blic:SumOfSub(inta,intb,intn)max=0;j=0;for(inti=0;iwi=ai; pi=ai+10;m=b;x0=n;voidputeSumOfSub(ints,intk,intr)xk=1;if (s+wk=m)printResult(k);coutelif(s+wk+wk+1=minti;coutfor (i=0;iS=S+pi;coutcoutcoutif(Smax)max=S;intJ=0;for(i=0;iif (xi=1)NJ=wi;J+;j=J;voidspecial()coutfor(inti
=0;icoutcoutf or(inti=0;iwi=rand();if(wi=0)wi=rand();sum=sum+wi;coutcou tm;sum=m*sum;coutr+=wi;sumOfSputeSumOfSub(0,0,r);sumOfSub .special();运行结果复杂性分析对于不同的输入结果,算法的执行次数有所不同,最好情况是n,最坏情况是n*2n。尽管差异很大,但当n很大时,对某些输入而言,回溯法仍可在短时间内求解。
拓展二问题描述子集和数问题拓展一:子集和问题的为W,c,P。其中,W=w1,w2,.,wn是一个正整数的集合,子集和数问题判定是否存在W的一个子集W1,使得W1=cW(0问题分析增加一个数组随机数组P,每个符合条件子集对应P集合的元素和计算出做个比较,然后输出最大的再对应原W子集。
算法演示
#includeusingnamespacestd;#include#include#defineM50claSu mOfSubprivate:intwM;intpM;intm;intxM;intNM;intmax;intj;pu blic:SumOfSub(inta,intb,intn)max=0;j=0;coutfor(inti=0;iwi =ai;pi=rand();coutcoutm=b;x0=n;voidputeSumOfSub(ints,intk ,intr)xk=1;if(s+wk=m)printResult(k);coutelif(s+wk+wk+1= minti;coutfor(i=0;iS=S+pi;coutcoutcoutif(Smax)max=S;intJ= 0;for(i=0;iif(xi=1)NJ=wi;J+;j=J;voidspecial()coutfor(inti =0;icoutcoutfor(inti=0;iwi=rand();if(wi=0)wi=ran
d();sum=s um+wi;coutcoutm;sum=m*sum;coutr+=wi;sumOfSputeSumOfSub(0, 0,r);sumOfSub.special();运行结果复杂性分析对于不同的输入结果,算法的执行次数有所不同,最好情况是n,最坏情况是
n*2n。尽管差异很大,但当n很大时,对某些输入而言,回溯法仍可在短时间内求解。
第3篇:
数据结构实_报告
一、概述软件开发的流程二、回顾C语言的基本语法:1、常量(类型)2、变量(类型、定义)3、表达式(例子:三位数的拆分)4、控制语句(if条件语句,例子:饿了吗?for循环语句,例子:做好事问题求解)5、数组(例子:猜数字游戏)三、学生成绩计算系统做好事问题求解:某学校为表扬好人好事需核实一件事,老师找了A、B、C、D三个学生,A说:"不是我。"。
B说:"是C。"。
C说:"是D。"。
D说:"C胡说"。这四个人中三个人说了实话。请问:这件好事是谁做的?
#includeStdio.h#includeConio.hvoidmain(void)charthisman;/ *定义变量用来保存做好事的人*/intsum=0;/*求和变量*//*循环枚举做好事的人*/for(thisman=A;thismangetch();猜数字:在计算机上设置一个没有重复数字的4位数,不能让猜得人知道。猜的人就可以开始猜。每猜一个数字,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数。
如正确答案为5234,而猜的人猜5346,则是1A2B,其中有一个5的位置对了,记为1A,而3和4这两个数字对了,而位置没对,因此记为2B,合起来就是1A2B。
接着猜的人再根据出题者的几A几B继续猜,直到猜中为止。
次数限制:有的时候,这个游戏有猜测次数上的限制。根据计算机测算,这个游戏,如果以最严谨的计算,任何数字可以在7次之内猜出。而有些地方把次数限制为6次或更少,则会导致有些数可能猜不出来。而有些地方考虑到人的逻辑思维难以达到计算机的那么严谨,故设置为8次甚至10次。也有的没有次数上的限制。我们今天要做的这个游戏就是设定次数为8次。

本文发布于:2023-05-12 09:59:15,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/887437.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:问题   子集   数字   次数   输入
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图