BX110937李建辉算法设计实验六
- 格式:docx
- 大小:110.80 KB
- 文档页数:11
实验一基尔霍夫定律的验证一.实验目的1.验证基尔霍夫定律,加深对基尔霍夫定律的理解。
2.掌握直流电流表的使用以及学会用电流插头、插座测量各支路电流的方法。
3.学习检查、分析电路简单故障的能力。
二.原理说明基尔霍夫定律:基尔霍夫电流定律和电压定律是电路的基本定律,它们分别描述结点电流和回路电压,即对电路中的任一结点而言,在设定电流的参考方向下,应有ΣI =0。
一般流出结点的电流取负号,流入结点的电流取正号;对任何一个闭合回路而言,在设定电压的参考方向下,绕行一周,应有ΣU =0,一般电压方向与绕行方向一致的电压取正号,电压方向与绕行方向相反的电压取负号。
在实验前,必须设定电路中所有电流、电压的参考方向,其中电阻上的电压方向应与电流方向一致,见图1-1所示。
图1-1三.实验设备1.直流数字电压表、直流数字电流表;2.恒压源(双路0~30V可调);3.NEEL-003A组件。
四.实验内容实验电路如图1-1所示,图中的电源U S1用恒压源I路0~+30V可调电压输出端,并将输出电压调到+6V,U S2用恒压源II路0~+30V可调电压输出端,并将输出电压调到+12V(以直流数字电压表读数为准)。
开关S1 投向U S1 侧,开关S2 投向U S2 侧,开关S3 投向R3侧。
实验前先设定三条支路的电流参考方向,如图中的I1、I2、I3所示,并熟悉线路结构,掌握各开关的操作使用方法。
1.熟悉电流插头的结构,将电流插头的红接线端插入数字电流表的红(正)接线端,电流插头的黑接线端插入数字电流表的黑(负)接线端。
2.测量支路电流将电流插头分别插入三条支路的三个电流插座中,读出各个电流值。
按规定:在结点A,电流表读数为…+‟,表示电流流入结点,读数为…-‟,表示电流流出结点,然后根据图1-1中的电流参考方向,确定各支路电流的正、负号,并记入表1-1中。
表1-1 支路电流数据3.测量元件电压用直流数字电压表分别测量两个电源及电阻元件上的电压值,将数据记入表1-2中。
深圳大学实验报告课程名称:计算机系统(3)实验项目名称:存储体系实验学院:*****专业:******************指导教师:*******报告人:**** 学号:****** 班级:************* 实验时间:2017年12月21日星期四实验报告提交时间:2017年12月21日星期四教务处制实验六并行结构实验一、实验目的学习多核机器上的pthread编程,观察SMP上多线程并发程序行为;了解并掌握消除SMP上cache ping-pong效应的方法;学习NUMA内存访存特性二、实验内容实验包括以下几个部分:1)以一个计数程序作为起点(20分),先简单并行化(30分);2)然后修正其并发执行的同步问题(30分);3)修正其并发度问题(20分)4)选做:解决其cache的ping-pong效应问题,最后形成一个比较理想的SMP并发程序(20)。
三、实验环境硬件:PC或任何一款具有cache的功能的计算机软件:Windows/Linux操作系统、C语言编译器、pthread库四、实验步骤及相关说明要求学生学习SMP上的pthread库多线程编程,按要求编写程序代码逐步完成实验操作。
1)编写一个完整程序用于统计一个数组中数值“3”出现的个数,统计核心样例代码如下:程序一核心统计代码(不含主函数、线程创建代码等)int *array; 待处理的数组int length; 数组元素的个数int count 统计结果int count3s(){int i;count=0;for(i=0;i<length;i++){if(array[i]==3){count++;}}return count;}编写完整程序,要求arrary元素足够多,256M以上,初始化为“030303…”模式。
运行后记录执行时间。
2)对上述程序完成多线程化的改造,用pthread编写多线程程序,每个线程所执行的统计代码以下列代码为模板:程序二线程化的核心统计代码(不含主函数、线程创建代码等)int *array; //待统计的数组int length; //每个线程划分到的元素个数int count; //统计出来的“M”个数int t; //线程数,取值为处理器核数void count3s_thread(int id) //id为创建线程时传入的线程号{/*compute portion of the array that this thread should work on*/int length_per_thread=length/t; //每个线程分担的元素个数int start=id*length_per_thread; //本线程负责的数组下标起点for(i=start;i<start+length_per_thread;i++) //遍历本线程负责的所有元素{if(array[i]==3){count++; //将统计结果增1}}}完成主程序设计,将数组array等分为几部分,每个部分由一个线程执行count3s_thread()统计“3”的出现次数——保存在count共享变量中,实现多线程并发统计的功能。
说明:
1.本次上机内容分两次上机完成。
2.将本文档改名为“学号_姓名_班级_Lab6.doc”,按照本说明完成以下实验内容;
3.在下下次上机(13周)时通过课程中心提交本文档。
实验内容和实验要求(上机指导P137)
1.练习题一
思考题及问题
答案:
2.练习题二运行结果截图:
思考题及问题
3.练习题三运行结果截图:
4.练习题四运行结果截图:
思考题及问题:
自测练习1.自测练习一
2.自测练习二
3.自测练习三
运行结果截图:
4.自测练习四
5.自测练习五
源程序文本:(提示:带参数的宏定义)
6.自测练习六
运行结果截图:
7.自测练习七
8.自测练习八源程序文本:。
《算法与数据结构》实验指导书实验课程类别:课程内实验实验课程性质:必修适用专业、年级:2012级计算机大类开课院、系:计算机科学与工程学院学时:18编写依据:《算法与数据结构》实验教学大纲修订时间:2014年2月《算法与数据结构》课程实验指导书(以下简称:指导书)是针对计算机学院所开设的对应课程的上机实验而编写的教学文件,供学生上机实验时使用。
上机的工作环境要求:Windows 2000或以上操作系统、VC++ 6.0或者其它高级程序设计语言。
学生应按指导教师的要求独立完成实验,并按要求撰写实验报告。
每一个实验,编程上机调试并且提交电子文档实验报告,以学号姓名作为文件名上传。
报告内容至少包含如下内容:1、学生基本情况:专业班级、学号、姓名2、实验题目、实验内容3、设计分析4、源程序代码5、测试用例(尽量覆盖所有分支)6、实验总结一.实验内容与学时分配序次实验题目实验类型基本技能训练学时一线性结构综合应用基础性(1)掌握线性结构的常用操作;(2)能够应用线性结构解决比较简单的问题。
10二非线性结构综合应用设计性(1)掌握树形、图形结构的插入、删除、查找等算法;(2)能够应用二叉树解决比较简单的问题。
4三查找技术综合应用设计性(1)熟练掌握查找的常用算法;(2)设计和应用查找算法解决简单的实际问题。
2四排序技术综合应用基础性(1)熟练掌握常用的排序方法,并掌握用高级语言实现排序算法的方法;(2)深刻理解排序的定义和各种排序方法的特点,并能加以灵活应用;(3)了解各种方法的排序过程及其依据的原则,并掌握各种排序方法的时间复杂度的分析方法。
2二.实验说明实验一、线性结构综合应用(一)顺序表的应用1、实验目的:(1)掌握用VC++上机调试线性表的基本方法;(2)掌握顺序表的存储结构以及基本运算的实现。
2、实验内容约瑟夫环问题:设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,m为任意一个正整数。
目录实验一线性表ﻩ错误!未定义书签。
(一)实验目的............................................................................................................... 错误!未定义书签。
(二) 实验内容ﻩ错误!未定义书签。
(三)实验报告ﻩ错误!未定义书签。
实验二堆栈ﻩ错误!未定义书签。
(一)实验目的 .............................................................................................................. 错误!未定义书签。
(二)实验内容 .............................................................................................................. 错误!未定义书签。
(三) 实验报告................................................................................................................. 错误!未定义书签。
实验三队列..................................................................................................................... 错误!未定义书签。
(一) 实验目的ﻩ错误!未定义书签。
(二) 实验内容................................................................................................................. 错误!未定义书签。
许昌学院计算机科学与技术学院《面向对象C++程序设计》课程实验教学手册创新源于实践《面向对象C++程序设计》课程实验教学手册姓名:任亚南学号:1101120103专业:计算机科学与技术班级:2012 级 1 班任课教师:李梅莲时间:2013 年6 月14 日综合成绩:许昌学院计算机科学与技术学院制实验手册使用及要求实验操作是教学过程中理论联系实际的重要环节,而实验报告的撰写又是知识系统化的吸收和升华过程,因此,实验报告应该体现完整性、规范性、正确性、有效性。
现将实验报告撰写的有关内容说明如下:1、预习报告必须在实验前完成。
2、实验前按实验要求手写程序或程序填空,并走查代码,有疑问处标记,上机时在C++集成开发环境下输入并调试手写程序,分析运行结果,如实填写实验过程及实验中存在的问题及解决办法。
3、实验结束后填写通过后的源程序和对实验的总结。
4、通过后的源程序可以手写也可以打印粘贴。
实验情况一览表实验一实验名称:c++基础练习实验性质:设计性学时数: 2 成绩:一、实验目的1.熟悉使用Visual C++ 或VS2005等集成开发环境编写和实现C++程序过程2.掌握C++程序的基本格式与规范3.熟悉C++基本的输入输出操作4.理解作用域运算符的概念与基本使用方法5.new和delete运算符二、实验要求实验前预习教材第1章,事先按要求填充或编写好实验程序,上机调试和运行程序,分析实验中遇到的问题。
三、实验所需器材与软件微型计算机; C++集成开发工具软件(VC++6.0、CFree、VS2005等)四、实验过程:设计源程序1:编写一个简单程序,输出“Welcome you”,并给程序加一行注释“First c++ program”。
#include <iostream>using namespace std;int main(){1) cout<<"Welcome you"<<endl;2) //first c++ program ;return 0;}实验结果设计源程序2:输入以下程序,如果有错误,请修改直到正确,分析运行结果。
天津理工大学(华信软件学院)实验指导书课程名称:面向对象设计UML建模实验六:创建状态图适应课程:(1969216)上机实验六:创建状态图一. 实验目的:根据需求陈述创建应用对象的状态图。
二. 实验内容:1.根据以下叙述,绘制“复印机”的状态图:“未接到工作命令时,复印机处于闲置状态。
接到复印命令后,转入复印状态, 完成复印后又回到闲置状态,等待命令。
若复印时发现没纸, 则进入缺纸状态. 发出警告等待装纸。
装纸完成后又进入闲置状态。
若复印时发现卡纸, 则进入卡纸(故障)状态。
发出警告等待排除故障。
故障排除后又进入闲置状态。
”2. 绘制“学生选课系统”中课程(Course)对象的状态图.经过需求分析,Course对象有以下状态:〃创建(Created)〃添加到数据库中(in database)〃课程(在数据库中)被删除(Deleted)〃课程被修改(Modified)〃课程被开设(纳入学期计划)(In Schedule)〃不允许选修(选修人数满)(Locked)3.绘制"一本书"在其生存周期的状态图.经过需求分析Book对象有以下状态:〃新书(New Book)〃可借阅(Available)〃已借出(Borrowed)〃已预约(Reserved)〃删除(Deleted)如果在上题中再加上一个”罚款(Fine)”状态,则状态图将如何变化?4.绘制打电话过程“电话线路”的状态图经过需求分析电话线路对象有以下状态:(可适当增减状态)“Idle”,“Dialing”,“Connecting”,“Ringing”,“Connected”,“Disconnected”,“TimeOut”,“Play Message”,“Busy Tone” (可以适当增减状态)相关事件:on hook(挂机)= hangs up,off hook(摘机)=pickup receiver,timeout(超时),called phone answers(接电话),line busy(线路忙),routed(线路接通),valid number(有效号码),invalid number(无效号码),wrong number(错码)5.绘制”智能交通信号灯控制”的状态图。
自动控制原理实验理论值计算过程及答案张怡编著轻工学院电气信息实验中心第一章评分标准:预习报告评分标准(总计30分):(1)预习报告内容完整(8分)、字迹工整(2分)。
合计10分。
(2)图、表绘制标准(3分)、参数标注正确(3分)。
合计5分。
(3)理论值计算正确(5分),并有计算过程(10分)。
合计15分。
操作成绩评分标准(总计50分):(1)按实验步骤完成实验,遵守学生实验守则,不违反实验操作规程(5分)。
合计5分。
(2)各典型环节(共8个)传递函数参数计算正确,按图中参数进行模拟电路接线,每个2.5分,合计20分。
(3)通过计算机对输出响应信号的采集,得到正确的阶跃响应曲线,并对输出信号进行参数的正确测量,记入原始数据记录表中,每个.52分。
合计20分。
(4)整理实验台、关闭计算机及各种仪器仪表(5分)。
合计5分。
实验报告评分标准(总计20分):(1)将实验数据整理到表1-5和1-6中。
各个典型环节传递函数计算正确(5分),阶跃响应曲线正确、工整(5分)。
合计10分。
(2)思考题回答正确(6分)。
合计6分。
(3)实验报告内容完整、字迹清晰(4分)。
实验数据理论计算过程及思考题答案实验2.1 典型环节及其阶跃响应一、实验数据理论值计算过程及实验数据记录表二、思考题:1.在什么条件下,惯性环节可以近似地视为积分环节?在什么条件下,惯性环节可以 近似地视为比例环节?答:惯性环节的传递函数是1K Ts +,惯性环节当0T →时可以等效为比例环节;当1T >>时可等效为积分环节。
阶跃响应前半段输出随时间变化,类似于积分环节;后半段达到稳态,不随时间变化,类似于比例环节。
但惯性环节具备了比例环节和积分环节的特性。
2.积在积分环节和惯性环节的实验中,如何根据阶跃响应的波形,确定积分环节和惯性环节的时间常数?答:一阶系统的单位阶跃响应为()1t h t e-=-,0t ≥,由此式可知,一阶系统的单位阶跃响应是一条初始值为零,以指数规律上升到终值1ss h =的曲线,如图所示。
实验六函数与编译预处置(参考答案)[实验任务一]:程序跟踪调试实例6-1:参考答案程序跟踪调试实例6-2:参考答案程序跟踪调试实例6-3:参考答案[实验任务二]:程序填空实例6-1:参考答案程序填空实例6-2:参考答案程序填空实例6-3:参考答案[实验任务三]:编程实例6-1:参考答案(第一种方式)编程实例6-1:参考答案(第二种方式)编程实例6-1:参考答案(第三种方式)编程实例6-2:参考答案编程实例6-3:参考答案编程实例6-4:参考答案(第一种方式)编程实例6-4:参考答案(第二种方式)编程实例6-5:参考答案编程实例6-6:参考答案编程实例6-7:参考答案编程实例6-8:参考答案[实验任务四]:程序1参考答案:#include <>/* 函数功能:计算两整型数之和,若是与用户输入的答案相同,那么返回1,不然返回0 函数参数:整型变量a和b,别离代表被加数和加数函数返回值:当a加b的结果与用户输入的答案相同时,返回1,不然返回0 */int Add(int a, int b){int answer;printf("%d+%d=", a, b);scanf("%d", &answer);if (a+b == answer)return 1;elsereturn 0;}/* 函数功能:打印结果正确与否的信息。
函数参数:整型变量flag,标志结果正确与否函数返回值:无*/void Print(int flag){if (flag)printf("Right!\n");elseprintf("Not correct!\n");}main() /*主函数*/{int a, b, answer;printf("Input a,b:");scanf("%d,%d", &a, &b);answer = Add(a, b);Print(answer);}程序两次测试的运行结果别离如下:①Input a,b:1,2↙1+2=3↙Right!②Input a,b:1,2↙1+2=4↙Not correct!程序2参考答案:#include <>/* 函数功能:计算两整型数之和,若是与用户输入的答案相同,那么返回1,不然返回0 函数参数:整型变量a和b,别离代表被加数和加数函数返回值:当a加b的结果与用户输入的答案相同时,返回1,不然返回0*/int Add(int a, int b){int answer;printf("%d+%d=", a, b);scanf("%d", &answer);if (a+b == answer)return 1;elsereturn 0;}/* 函数功能:打印结果正确与否的信息。
《数据结构与算法》实验指导书大连民族学院信息与通信工程学院2013 年10 月10 日基本要求1.学生必须按时到实验室做实验,不得迟到早退,未经老师批准不得中途离开。
凡迟到者,应给予批评并作适当扣分。
实验课迟到20分钟以上及无故缺席者视为旷课,旷课者不予补做实验,本次实验以零分计。
学生因病或特殊情况不能按时到实验室做实验时,应办理正常请假手续。
请病假必须有医生签字的病假条,请事假必须有班主任签字的事假条。
不符合请假手续的,以旷课论处。
请假的学生由指导教师安排补做实验。
对于未做实验数达三分之一以上(含三分之一)的学生,实验课程按0分计。
2.学生在每次实验课之前,应仔细阅读实验教材,查阅相关的资料,写出预习报告。
预习报告的具体内容包括:实验内容、实验目的、实验原理图、实验步骤、实验数据记录表格等。
实验课前由任课教师检查预习报告,未写预习报告者不予做实验。
3.做实验前,了解设备的原理和正确使用方法。
在没有弄懂仪器设备的使用方法前,不得贸然使用,否则因使用不当造成仪器设备损坏的,根据大连民族学院《仪器设备损坏丢失处理暂行办法》规定进行处理。
实验室内设备在实验过程中不准任意搬动和调换,非本次实验所用仪器设备,未经指导教师允许不得动用。
4.要求每位学生在实验过程中,要具有严谨的学习态度、认真、踏实、一丝不苟的科学作风。
实验过程中学生按照预习的内容进行实验,且重视实验的调试过程,学会如何根据实验现象判断问题所在。
坚持每次实验都要亲自动手,不可“坐车”,每个实验每个学生都要独立完成,不允许抄袭,无特殊原因,中途不得退出实验,否则本次实验无效。
5.实验中若接线、改接、拆线都必须在切断电源的情况下进行,线路连接完毕再送电。
实验中,特别是设备刚投入运行时,要随时注意仪器设备的运行情况,如发现有过热、异味、冒烟、火花等,应立即断电,并请指导老师检查、处理。
6.实验过程中,如出现事故,就马上拉开电源开关,然后找指导教师和实验技术人员,如实反映事故情况,并分析原因和处理事故。
《程序设计基础》实验教程对于从事计算机行业的人员来说,设计能力是最主要的基本功之一。
入门课程《程序设计基础》的学习效果将直接关系到编程能力的掌握和提高以及后续课程的学习。
然而,实践证明,许多初学者在学习这门课程时的效果并不理想。
对初学者来说,如何学好本课程?首先,要理解教材中所给出的语法描述,并学会按语法规定去编写指定问题的求解程序。
经过这样的多次反复,初学者就可以找到编程的感觉。
除了要学好理论知识外,更重要的一点是要到计算机上去验证,因为只有实践才是检验真理的标准。
只有通过到计算机上去实践,才能发现学习中存在的问题,巩固所学知识,加强解决实际问题的能力,增强信心。
因此,《程序设计基础》课程的上机实验是本课程必不可少的实践环节,必须加以重视。
本课程上机实验的目的是使学生熟悉用高级语言解决实际问题的全过程,加深对语言的理解,得到程序设计基本方法和能力的训练。
在独立编写程序、独立上机调试程序的同时,真正能用高级语言这个工具去解决实际问题,对计算机学科的相关知识有所了解,从而为后续课程的学习奠定良好的基础。
本实验指导所用环境是Visual C++ 6.0及以上版本。
考虑到本课程的内容和特点,设置了十四个实验,每次实验需要两至三小时,分别侧重于教材中的一个方面,其中标有“*”号的习题的综合性较强,可供学有余力的学生选择。
实验时也可根据具体情况做适当调整。
虽然可能由于课时和机时限制等原因而不能在实验课时内全部得到安排,但还是建议学生能将其中的每个实验都能认真做一遍,因为这些实验都是学习本课程所必需的。
学生在做实验之前应仔细阅读本实验指导书,初步掌握实验的基本要求和实验方法。
在实验过程中,学生应该有意识的培养自己调试程序的能力,积累发现问题、解决问题的经验,灵活主动的学习。
对于分析运行结果的实验习题,上机前先进行用人工分析,写出运行结果,与上机调试得到的结果进行对照,如有差异,分析其原因。
对于程序编制的实验习题,上机前应考虑出较成熟的编程思路,有意识提供出多种方案,以灵活运用所学知识和技巧。
电子信息学院实验报告书评语:实验态度:认真()一般()较差()实验结果:正确()部分止确()错()实验理论:掌握()熟悉()了解()生疏()操作技能:较强()一般()较差()实验报告:较好()一般()较差()成绩:指导教师:-王淮亭批阅时间:2014年05月05日1. 实验目的(1) 初步掌握动态规划算法(2)能够运用动态规划的思想解决实际问题,如矩阵连乘问题等2. 实验要求(1)n 个矩阵连乘问题。
(2) 应用顺推实现动态规划求解 n 行m 列边数值矩阵最大的路程,已知n 行m 列的边数值矩阵, 每一个点可向右或向下两个去向,试求左上角顶点到右下角顶点的所经边数值和最大的路程。
(3)求解点数值矩阵最小路径,随机产生一个n 行m 列的整数矩阵,在整数矩阵中寻找从左上角至右下角,每步可向下(D)或向右(R)或斜向右下(0)的一条数值和最小的路径。
(4) 应用递推实现动态规划求解序列的最小子段和。
(5)插入加号求最小值,在一个n 位整数a 中插入r 个加号,将它分成r+1个整数,找出一种加号的插入方法,使得这 r+1个整数的和最小。
3. 实验原理动态规划的基本思想:动态规划法的实质也是将较大问题分解为较小的同类子问题,这一点上 它与分治法和贪心法类似。
但动态规划法有自己的特点。
分治法的子问题相互独立,相同的子问题 被重复计算,动态规划法解决这种子问题重叠现象。
贪心法要求针对问题设计最优量度标准,但这 在很多情况下并不容易。
动态规划法利用最优子结构,自底向上从子问题的最优解逐步构造出整个 问题的最优解,动态规划则可以处理不具备贪心准则的问题4. 实验设备PC 机5. 实验步骤(1) 刻画最优解的结构特性; (2) 递归定义最优解值;(3) 以自底向上方式计算最优解值; (4)根据计算得到的信息构造一个最优解。
其中,第(1 )至(3)步是动态规划算法的基本步骤。
最优解值是最优解的目标函数的值6. 实验结果“行劇法加 P白白白白詞 1巨巨巨巨民旳戈买BB^f ¥胆2LX證序年入入入辎0前前前融淨■十;\和冈细朗U^\计尊机幫用亘法和齢诒计谋眸\计諒叽氢迭实那D 亡匕口熱吕注与宅畑*三.回TbJJ7 •实验体会通过这次实验加深了我对动态规划算法的理解,通过这五个实验使我熟练掌握动态规划算法, 使我对动态规划算法,分治法,贪心算法有了区别的认识,动态规划算法融合了分治法和贪心法的 优点,更好的解决问题,实验有利于加深理论的理解,非常实用。
附:源程序第一题源程序: #in elude <stdio.h> void mai n(){in t d,n ,i,j,k,t,r[1OO],m[1OO][1OO]; printf (”请输入矩阵的个数 n:");21确请4自c-&列0 整28九序yt 丁4,亦ke -2巖y 需。
子子an个2--- Press图6-1 n 个矩阵连乘问题图6-2应用顺推实现动态规划求解n 行m 列边数值矩阵最大的路程424,图6-3递推实现动态规划求解序列的最小子段和图6-4插入加号求最小值int a[50][50],l[50][50],r[50][50];char st[50][50]; t=time()%1000;sra nd(t);prin tf(" 请输入数字三角形的行数n:"); sca nf("%d",&n);for(i=1;i <n ;i++) j=ra nd();for(j=1;j<=33;j++) pri ntf(" ");pri ntf(" A \n ”);for(i=1;i<=n ;i++){for(j=1;j<=37-4*i;j++) pri ntf("");for(j=1;j<=i;j++) pri ntf(" . "); prin tf("\n\n");for(j=1;j<=36-4*i;j++) pri ntf("");for(j=1;j<=i;j++){l[i][j]=ra nd()/1000+1;pri ntf("%4d",l[i][j]);r[i][j]=ra nd()/1000+1;pri ntf("%4d",r[i][j]);} prin tf("\n");}for(j=1;j<=37-4*(n+1);j++) printf("");for(j=1;j<=n+1;j++) printf(".");printf(”底边\n\n ”);for(i=n;i>=1;i--){for(j=1;j<=i;j++)if(a[i+1][j]+l[i][j]<a[i+1][j+1]+r[i][j]){a[i][j]=a[i+1][j]+l[i][j];st[i][j]=T;}else{a[i][j]=a[i+1][j+1]+r[i][j];st[i][j]='r';}}prin tf("\n 最短路程为:%d",l[1][1]);prin tf("\n 最短路径为:顶点A ");for(j=1,i=1;i<=n ;i++)if(st[i][j]==T)prin tf("L-%d-",l[i][j]);else{pri ntf("R-%d-",r[i][j]);j++;}printf("底边。
\n");}第三道题程序:随机产生一个n行m列的整数矩阵,在整数矩阵中寻找从左上角至右下角,每步可向下(D)或向右(R)或斜向右下(0)的一条数值和最小的路径。
应用动态规划,即从右下角逐行反推至左上角。
确定n,m后,随机产生的整数二维数组a(n,m)作矩阵输出,同时赋给部分和数组b(n,m)。
这里数组b(i,j) 为点(i,j)到右下角的最小数值和,stm(i,j) 是点(i,j)向右(R)或向下(D)或向右下(0)的路标字符数组。
注意到最后一行与最后一列各数只有一个出口,于是由b(n,m)?开始向左逐个推出同行的b( n,j),(j=m-1,...,2,1); 向上逐个推出同列的b(i,m),(i=n-1,...,2,1) 。
b(i,j) 与stc(i,j)(i=n-1,...,2,1,j=m-1,...,2,1)) 的值由同一列其下面的整数b(i+1,j) 与同一行其右边的整数b(i,j+1)或其右下方的b(i+1,j+1)的值决定:首先,作赋值b(i,j)=yb+b(i+ 1, j + 1): stc(i, j) = "O".( 其中变量yb 为原b(i,j) 的值)。
然后,求b(i+1,j) 与b(i,j+1) 的最小值min。
如果b(i+1,j+1)>min , 说明前面为b(i,j) 赋值不对,作修改:b(i,j)=yb+mi n若min 为b(i+1,j), 则stc(i,j)="D", 否则stc(i,j)="R"这样反推所得b(1,1)即为所求的最小路径数字和。
为了打印最小路径,利用c数组从上而下操作:先打印a(1,1),i=1,j=1.若stc(i,j)="R" 则j增1,即j=j+1,然后打印"-R-"与右边整数a(i,j);若stc(i,j)="D" 则i增1,即i=i+1,然后打印"-D-"与下面整数a(i,j);若stc(i,j)="O" 则i,j均增1,即i=i+1,j=j+1, 然后打印"-O-" 与斜向右下整数a(i,j);《数据库原理及应用》实验报告-6依此类推,直至打印到终点a(n,m)。
第四道题程序:#i nclude <stdio.h>#i nclude <stdlib.h>#in elude <time.h>void mai n(){ int i,j,k,t ,n ,s,smi n,q[1000],a[1000];t=time(0)%1000;sra nd(t);printf(”序列中n个正负项,请确定n:");sca nf("%d",&n);printf(" 序列的%d个整数为:\n ”,n);for(i=1;i<=n ;i++){t=ra nd()%(4* n)+10;if(t%2==1) a[i]=-1*(t-1)/2;else a[i]=t/2;prin tf("%d,",a[i]);}smi n=1000;q[0]=0;for(j=1;j<=n ;j++){if(q[j-1]>=0) q[j]=a[j];else q[j]=q[j-1]+a[j];if(q[j]<smi n){smi n=q[j];k=j;}}prin tf("\n 最小子段和为:%ld\n" ,smi n);for(s=0,i=k;i>=1;i--){ s+=a[i]; if(s==smi n) break; }printf(" 最小子段从序列的第%d项到第%d项。
\n",i,k);}第五道题程序:#i nclude <stdio.h>#in elude <stri ng.h>void mai n(){ char sr[16];int n,i,j,k,u,r,b[16],t[16],c[16][16];double f[17][17],d;prin tf(" 请输入整数:");scan f("%s",sr);n=strle n( sr);printf(”请输入插入的+号个数r:");scan f("%d",&r);if(n<=r){printf(" 输入的整数位数不够或r太大!\n ");return;}printf(" 在整数%s中插入%介+号,使和最小:\n",sr,r);for(d=0,j=0;j<=n _1;j++)b[j]=sr[j]-48;for(i=1;i<=n ;i++)for(j=1;j<=r;j++)f[i][j]=1e16;for(d=0,j=1;j<=n ;j++){d=d*10+b[j-1];f[j][0]=d;}for(k=1;k<=r;k++) for(i=k+1;i<=n ;i++)《数据库原理及应用》实验报告for(j=k;j<i;j++)。