PTA水题
PTA上面打的一些新手入门题。
Daniel Muei
八边形战士
展开
-
【PTA】 7-2 租用游艇问题
题目来源:王晓东,《算法设计与分析》长江游艇俱乐部在长江上设置了n个游艇出租站1,2,…,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i到游艇出租站j之间的租金为r(i,j),1<=i<j<=n。试设计一个算法,计算出从游艇出租站1 到游艇出租站n所需的最少租金。解题思路:1、这是一道动态规划的题,先看输入,第i行表示第i站到第 i+1 站,第 i+2 站, … , 第 n 站的租金,也就是说,我们可以将它转化为倒三角的形式。2、接着,原创 2021-10-19 14:46:26 · 1153 阅读 · 0 评论 -
【PTA】 7-1堆排序
对n个数,要求用堆排序(最大堆)对其进行排序。#include<bits/stdc++.h>using namespace std;int n,N=1000;int a[10000];void HeapAdjust(int a[],int s,int m) //筛选法调整堆 { int x=a[s]; for(int j=2*s;j<=m;j*=2) { if(j<m && a[j]<a[j+1]) j++原创 2021-06-23 11:03:09 · 3110 阅读 · 0 评论 -
【PTA】 类和对象——6-3 点和线段
已知表示点的类CPoint和表示线段的CLine类, 类CPoint包含:(1)表达点位置的私有数据成员x,y (2)构造函数及复制构造函数 类CLine包含: (1)两个CPoint的点对象(该两点分别为线段的两个端点) (2)构造函数(提示:构造函数中用初始化列表对内嵌对象进行初始化) (3)公有成员函数GetLen,其功能为返回线段的长度,返回值类型为整型 (4)类属性成员count用于记录创建的CLine类对象的个数,及用于显示count值的ShowCount函数; 要求: (1)实现满足上述属性和原创 2021-05-27 16:43:17 · 1239 阅读 · 2 评论 -
【PTA】 类和对象——6-2 车的不同行为
定义一个车(vehicle)基类,有虚函数Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,它们都有Run、Stop等成员函数。完成这些类使得主函数可以运行并得到正确的输出结果。函数接口定义:完成类代码。裁判测试程序样例:/* 请在这里填写答案 */int main(int argc, char const *argv[]){ Vehicle veh; Bicycle bic; Motorcar mot; run(veh原创 2021-05-27 16:37:00 · 2158 阅读 · 2 评论 -
【PTA】 类和对象——6-1 Point类的运算
定义Point类,有坐标x,y两个私有成员变量;对Point类重载“+”(相加)、“-”(相减)和“==”(相等)运算符,实现对坐标的改变,要求用友元函数和成员函数两种方法实现。对Point类重载<<运算符,以使得代码 Point p; cout<<p<<endl;可以输出该点对象的坐标。函数接口定义:实现Point类。裁判测试程序样例:/* 请在这里填写答案 */int main(int argc, char const *argv[]){ Poi原创 2021-05-27 16:33:24 · 1266 阅读 · 0 评论 -
【PTA】 7-1 建立与遍历二叉树
以字符串的形式定义一棵二叉树的先序序列,若字符是‘#’, 表示该二叉树是空树,否则该字符是相应结点的数据元素。读入相应先序序列,建立二叉链式存储结构的二叉树,然后中序遍历该二叉树并输出结点数据。#include<stdio.h>#include<stdlib.h>typedef struct BiTNode{ char data; struct BiTNode *left, *right;}BiTNode, *BiTree;void CreatBiTree(Bi原创 2021-05-13 16:26:28 · 3416 阅读 · 0 评论 -
【PTA】 括号匹配
给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。在这里插入图片描述这题用栈来写,我是不想用传统写法(好麻烦),所以定义一个栈就好了。基本思路:1、若输入的为左括号,进栈。2、若输入的为右括号,先判断是否栈空,空说明右括号多了,不符合题意;若栈不空,则与栈顶的左括号比较,若能匹配,弹栈(弹出栈顶的左括号)。3、假设全部括号都能正确匹配,则最后栈一定是空的,所以当栈为空且flag不为0时输出。#include&l原创 2021-04-11 15:08:24 · 2791 阅读 · 0 评论 -
【PTA】 类和对象 计算点到直线的距离一一友元函数的应用
计算点到直线的距离。首先设计一个点类Point,它有2 个私有数据成员x和y,表示点的坐标。另一个类为直线类Line,它有3 个私有数据成员a,b和c,表示直线方程ax+by+c= 0。这两个类中都说明了一个友元函数dist,用于计算一个点到直线的距离。点(x.y)到直线ax+by+c=0的距离d的计算公式如下:注意:1、main函数中要先输入再创建对象,否则过不了。2、要考虑距离等于0的特殊情况!#include<bits/stdc++.h>using namespace st原创 2021-04-02 21:22:34 · 2517 阅读 · 1 评论 -
【PTA】 类和对象 计算全班学生C++课程的总成绩和平均成绩
定义一个类Student,记录学生C++课程的成绩。要求使用静态数据成员或静态成员函数计算全班学生C++课程的总成绩和平均成绩。题解见注释。#include<bits/stdc++.h>using namespace std;class Student{ int score; static int sum; //定义静态数据成员 public: Student(int s=0):score(s) //等价于Student(int s=0){原创 2021-04-02 21:17:50 · 1181 阅读 · 0 评论 -
【PTA】 用天平找小球
本人第一篇博客,选了道巨水无比的作业题,试试手~废话不说,直接看题,给你三个球,让你找出质量不同于另外两个的球。没什么好解释的吧,一个if结构语句搞掂!if…else if…else代码如下:#include<iostream>using namespace std;int main(){ int x, y, z; cin>>x>>y>>z; if(x==y) cout<<"C"<<end原创 2021-02-22 17:35:14 · 358 阅读 · 0 评论 -
【PTA】 Shuffling Machine
题目是全英的,我翻译一下。洗牌是一种用来随机化一副扑克牌的程序。因为标准的洗牌技术被认为是软弱的,而且为了避免员工通过不充分的洗牌与赌客合作的“内部工作”,许多赌场雇用了自动洗牌机。你的任务是模拟洗牌机。机器根据给定的随机顺序洗牌54张,并重复给定的次数。假设一张牌组的初始状态按以下顺序排列:“S”代表“Spade”,“H”代表Heart,“C”代表Club,“D”代表Diamond,“J”代表Joker。给定的顺序是[1,54]中不同整数的排列。如果第i个位置的数字是j,则意味着将牌从第i个位置移原创 2021-03-03 20:30:45 · 711 阅读 · 2 评论 -
【PTA】 鸡兔同笼
一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。这题关键点是怎么表达二元一次方程组的思想,即2x+4y=a(假设鸡数量为x,兔数量为y)。通过观察上式很容易可以发现当a为偶数时才符合题意,那我们就可以抓住这个隐藏点水过这道题啦!因为题目要求至多和至少多少只动物,所以只需要一个除法就可以得到答案。(a分别整除4只脚和2只脚)不要忘记不满足条件的情况!#include<bits/stdc++.h&g原创 2021-03-03 20:14:37 · 2844 阅读 · 2 评论 -
【PTA】 矩阵运算
给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。学过矩阵的同学应该都知道,副对角线就是↙这题最妙的点在于去除副对角线的操作:找到i+j != n-1的关系!女少口阿~贴代码:#include<iostream>using namespace std;int main(){ int n,sum=0; int a[100][100]; cin>>n; for(int i=0;i&l原创 2021-03-01 23:30:00 · 2244 阅读 · 0 评论 -
【PTA】 学生成绩录入及查询
本题要求编写程序,录入N条学生的信息,并且按查询要求显示学生成绩等信息。给出一名学生的信息。 其中学号是11位数字;姓名是不超过10个字符、不包含空格的非空字符串;成绩是<=100的非负整数;在学生信息输入完成后,给出要查询的姓名。这是一道比较基础的结构体的题,结合“查找”的方法,即先定义flag=0,若查找到,则flag=1,最后再判断查找不到的情况即可。#include<iostream>using namespace std;struct student{ st原创 2021-03-01 22:19:50 · 2838 阅读 · 0 评论 -
【PTA】 通讯录排序
输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。这题是一道基础的结构体题目,核心在于对通讯录及逆行排序,我这里用的是冒泡,也可以使用其他排序方法。贴代码:#include<iostream>using namespace std;struct friends{ char name[20]; int birth; char phone[20];}a[100];int main(){ i原创 2021-03-01 21:50:06 · 3890 阅读 · 2 评论 -
【PTA】到底有多二
一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字-13142223336是个11位数,其中有3个2,并且是负数,也是偶数,则它的犯二程度计算为:3/11×1.5×2×100%,约为81.82%。本题就请你计算一个给定整数到底有多二。#include<iostream>#include<iomanip>#include<string.h> //原创 2021-03-01 21:36:58 · 579 阅读 · 0 评论 -
【PTA】 输出数组元素
本题要求编写程序,对顺序读入的n个整数,顺次计算后项减前项之差,并按每行三个元素的格式输出结果。这是一道数组水题,很容易想到分类讨论,坑点不算多,细心点就好。#include<iostream>using namespace std;int main(){ int n,a[20]; cin>>n; for(int i=0;i<n;i++) cin>>a[i]; for(int i=1;i<n;i++) //后一项减前一项原创 2021-02-24 22:24:37 · 1067 阅读 · 0 评论 -
【PTA】求组合数
直接贴代码:#include<iostream>using namespace std;double fact(int n) //题目要求函数类型是double { double x=1; for(int i=1;i<=n;i++) //计算阶乘 x*=i; return x;}int main(){ int m,n; double result; cin>>m>>n; result=fact(n)/(f..原创 2021-02-22 23:07:55 · 309 阅读 · 1 评论 -
【PTA】 N阶楼梯上楼问题
题目:要求:输入输入整数n,输出当楼梯阶数是n时的上楼方式总数。这题的实质是斐波那契数列:刚开始我就想到用数组,简单直接:#include<iostream>using namespace std;int main(){ int n,a[45]; a[1]=1; a[2]=2; for(int i=3;i<46;i++) //i=3开始符合斐波那契数列的规律 a[i]=a[i-1]+a[i-2]; cin>>n; cout<<原创 2021-02-22 22:04:51 · 722 阅读 · 0 评论 -
【PTA】 统计素数并求和
本题要求统计给定整数M和N区间内素数的个数并对它们求和。这题的思路比较简单,题目最核心的点就是找素数,何为素数?素数也叫质数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。因此,可以定义一个函数来判断是否为素数,在主函数的循环中调用函数即可。以下为代码:#include<iostream>#include<cmath>using namespace std;int prime(int k){ if(k<=1) return 0;原创 2021-02-22 21:03:12 · 3365 阅读 · 1 评论 -
【PTA】 最大值和最小值
此题让你输入一个正整数n,接下来输入n个数,找出最大值和最小值,并输出最大值减最小值。#include<iostream>using namespace std;int main(){ int n; cin>>n; int a[1005]; int max=0,min=1000; for(int i=0;i<n;i++) { cin>>a[i]; if(max<a[i]) max=原创 2021-02-22 18:04:30 · 4205 阅读 · 0 评论