没有合适的资源?快使用搜索试试~ 我知道了~
zzu算法设计与分析实验报告
需积分: 0 7 下载量 90 浏览量
2023-04-06
23:54:54
上传
评论 9
收藏 1.6MB DOC 举报
温馨提示
试读
59页
zzu算法设计与分析实验报告 pta题目 T4: 求组合数 T5: 高速公路超速处罚 T9: 查找书籍 T4: 分形的递归输出 T7: 士兵排队 T8: 输油管道问题 T1: 插座问题 T7: 后序+中序序列构造二叉树 T8: 求第K小的数 T1: 数字三角形 T2: 新冠状病毒的基因序列 T3: 单调递增最长子序列 T1: 拦截导弹 T2: 分弹珠 T5: 矩阵取数游戏 T2: 汽车加油问题 T3: 会场安排问题 T4: 程序存储问题 T1:自然数拆分问题 T2:自然数拆分的方案数 T3:子集和问题 T6:最短路径 T9:BFS
资源推荐
资源详情
资源评论
算法设计与分析实验报告
(2022---2023 第 1 学期)
专 业 计算机科学与技术
年 级
姓 名
学 号
指导教师
郑州大学计算机与人工智能学院
郑州大学计算机与人工智能学院实验报告
- 1 -
实验一
一、实验目的
1. 理解算法的概念
2. 理解程序与算法的区别和内在联系
3. 掌握算法的计算复杂性概念
二、实验题目
PTA 平台上,实验 1 中的第 4、5、9 题
T4: 求组合数
T5: 高速公路超速处罚
T9: 查找书籍
三、实验要求
请在 PTA 平台实现程序,并要求在实验报告中写出代码及体会。
T4:求组合数
本题要求编写程序,根据公式
Cnm
=
m
!(
n
−
m
)!
n
!算出从
n
个不同元素中取出
m
个元素
(
m
≤
n
)的组合数。建议定义和调用函数 fact(n)计算 n!,其中 n 的类型是 int,函数类
型是 double。
输入格式:
输入在一行中给出两个正整数
m
和
n
(
m
≤
n
),以空格分隔。
输出格式:
按照格式“result = 组合数计算结果”输出。题目保证结果在 double 类型范围内。
代码:
#include<stdio.h>
double fact(int n);
int main(void)
{
int n,m,i;
double result;
scanf("%d %d",&m,&n);
result=1;
for(i=0;i<=n;i++){
郑州大学计算机与人工智能学院实验报告
- 2 -
result=fact(n)/(fact(m)*fact(n-m));
}
printf("result = %.0f",result);
return 0;
}
double fact (int n)
{
int i;
double product;
product=1;
for(i=1;i<=n;i++)
{
product=product*i;
}
return product;
}
体会:基本思路:自定义函数声明,定义变量;输入变量;调用 for 语句;计算;定义求
阶乘的函数。定义和调用函数 fact(n)计算 n!,其中 n 的类型是 int,函数类型是 double。
算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或
多个操作。具有以下性质:有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都
可在有穷时间内完成;确定性:算法中每条指令必须有确切的含义,不会产生二义性,对于
相同的输入只能得出相同的输出;可行性:一个算法是可行的,即算法中描述的操作都是可
以通过已经实现的基本运算执行有限次来实现的;输入:一个算法有零个或多个输入,这些
输入取自于某个特定的对象的集合;输出:一个算法有一个或多个输出,这些输出是与输入
有着某种特定关系的量。目标是设计出正确、可读、健壮、高效率、低存储量需求的算法。
T5:高速公路超速处罚
按照规定,在高速公路上行使的机动车,达到或超出本车道限速的 10%则处 200 元罚款;
若达到或超出 50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的
处理。
输入格式:
输入在一行中给出 2 个正整数,分别对应车速和限速,其间以空格分隔。
郑州大学计算机与人工智能学院实验报告
- 3 -
输出格式:
在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket
200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中 x 是超速的百分比,
精确到整数。
代码:
#include <stdio.h>
#include <math.h>
int main()
{
int speed,limit;
scanf("%d %d",&speed,&limit);
double x,t;
t=limit-speed;
x=100*fabs(limit-speed)/limit;
if (x>=10&&x<50)
printf("Exceed %.0f%%. Ticket 200",x);
else if(x>=50)
printf("Exceed %.0f%%. License Revoked",x);
else printf("OK");
return 0;
}
体会:基本思路:利用绝对值函数:int abs(int i);
头文件:stdlib.h
功能:求整数 i 的绝对值
说明:计算|i|, 当 i 不为负时返回 i,否则返回 -i
double fabs(double x );
头文件:math.h
功能:求浮点数 x 的绝对值
说明:计算|x|, 当 x 不为负时返回 x,否则返回 -x
郑州大学计算机与人工智能学院实验报告
- 4 -
区别:程序可以看作采用计算装置能够处理的语言描述的算法,由于它是算法的实际体现,
又能在实际计算机上执行,因此被称为算法的实现。程序可能用各种计算机语言描述。例如
用直接对应于特定计算机硬件的机器语言或者汇编语言。也可以用通用的高级编程语言,
如 C、Java、Python 等。编程语言可以描述程序,定义各种数据结构,描述各种算法。
联系:在每一个程序背后都隐藏着一个或者一些算法。如果一个程序正确实现了一个能解决
某个问题的算法,用这个程序处理该问题的实例就应该得到相应的解。此外,该程序运行时
的各种动态性质,也应该反映它所实现的算法的性质,这样才是相应算法的合理实现。本栏
目以后还会进一步讨论这个问题。另一方面,由于程序是用计算机能处理的某种具体编程语
言描述的,其中必然会包含一些与具体语言有关的细节结构和描述方式方面的特征。所用的
语言不同,不仅可能影响算法描述的方便性,也可能影响到程序的运行效率。由于这些情况,
在抽象地考虑一个计算过程或考虑一个计算过程的抽象性质时,人们常用“算法”作为术语,
用于指称相应计算过程的描述。而在考虑一个计算在某种语言里的具体实现和实现中的问题
时,人们常用“程序”这一术语讨论相关问题。此外,有时书中描述的是一个程序,但在讨
论时却说“算法”。这时实际想说的就是该程序背后的与具体语言无关的计算过程。
T9: 查找书籍
给定 n 本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名
称和定价。
输入格式:
输入第一行给出正整数 n(<10),随后给出 n 本书的信息。每本书在一行中给出书名,即
长度不超过 30 的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。
输出格式:
在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留 2 位小数。
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main() {
int n = 0;
char a[10][31]; //二维数组存放书名
double b[10]; //存放价格,浮点型
int lmax = 0, lmin = 0; //最大值和最小值在数组中的位置
double max = 0.0, min = 9999.0;
scanf("%d", &n);
getchar();
for (int i = 0; i < n; i++) {
剩余58页未读,继续阅读
资源评论
啊hii
- 粉丝: 3655
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功