![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
PTA题目、其他题目
-森木-
这个作者很懒,什么都没留下…
展开
-
办事大厅排队
办事大厅排队在郑州大学综合办事大厅,每天陆陆续续有很多人来排队办事。现在你能否写程序帮助老师时刻了解当前办理业务的情况。请同学们学习C++ STL中 list相关内容后,编程实践。输入格式:第一行一个数字N,表示排队信息或者查询信息条目的数量。以下N行,每行的内容有以下3种情况(1) in name 表示名字为name的人员新来到办事大厅,排在队伍的最后。(in和name间存在一个空格,name是名字对应字符串,长度不超过10)。(2) out 表示当前排在最前面的人已经办理完业务,离开了。原创 2020-12-29 22:23:08 · 356 阅读 · 0 评论 -
最优服务次序问题
最优服务次序问题问题描述:设有n个顾客同时等待一项服务,顾客i需要的服务时间为ti,(1<=i<=n)。应如何安排n个顾客的服务次序才能使平均等待时间达到最小?(平均等待时间是n个顾客等待服务时间总和除以n)输入:第一行为一个正整数n,表示有n个顾客第二行为n个正整数,表示n个顾客需要的服务时间输出:最小平均等待时间。#include<iostream>#include<algorithm>using namespace std;int main(){原创 2020-12-28 19:16:08 · 433 阅读 · 2 评论 -
半数集问题
半数集问题问题描述:给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下:(1) n∈set(n);(2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;(3) 按此规则进行处理,知道不能再添加自然数为止。例如,set(6)={6,16,26,126,36,136},半数集set(6)中有6个元素。输入:整数n(0<n<1000)输出:半数集set(n)中的元素个数。//递归:#include <iostream>using nam原创 2020-12-26 17:30:09 · 137 阅读 · 0 评论 -
子集和问题
子集和问题问题描述:给定集合S,S中有n个正整数,M是一个正整数。子集和问题判定是否存在S的一个子集S1,使得S1中各元素之和等于M。如果问题无解,输出“No Solution”,问题有解,则输出满足子集S1中各元素的值。#include<iostream>using namespace std;int n,s[1000],m;int x[1000],flag = 0,num = 0;void ss(int k){ int i; if(k > n){ if(num原创 2020-12-25 18:51:21 · 461 阅读 · 0 评论 -
整数变换问题
整数变换问题整数i的两种变换定义为 ,(向下取整);设计一个算法求给定两个整数a和b,用最少次数的 和 变换将整数a变换为b;例如实现提示:观察f和g两个操作可知,f总是使得i变大,g总是使得i变小。因此在决定让x执行哪个操作之前可以先判断i和目标值m之间的大小关系。如果x>m,就让其执行g操作;反之,执行f操作。问题的解分为两种情况,一种是有解,即n可以通过函数变换成m;另一种是无解,即n无法通过函数变换成m。有解的情况比较容易,只需要判断最后的i是否等于m即可。如果i等于m,那么说明n已原创 2020-12-24 19:07:25 · 557 阅读 · 1 评论 -
最大k乘积问题
最大k乘积问题问题描述:设X是一个n位十进制整数,如果将X划分为K段,则可得到K个整数,这K个整数的乘积称为X的一个K乘积。请设计算法并编程实现,对于给定的X 和K,求出X的最大K乘积。输入:X,K,n输出:X的最大K乘积。思路:m(i,j)——表示第i位到第j位整数组成的(j-i+1)位整数;dp(p,q)——表示前p位整数被划分为q段所得到的最大乘积;[划分段数 > 整数位数,则结果为0]初始子问题:(q=1时)dp(p,1)=m(1,p)无论多少位整数,被划分为一段,其最原创 2020-12-23 18:56:17 · 1228 阅读 · 0 评论 -
PTA——寻宝
寻宝小明有一张藏宝图,上面有m*n个房间,每个房间里面都有一个有一定价值的宝物,小明只能从左上角的房间进入收集宝物,且每次只能向右边或向下边的房间继续寻宝,最终只能从最右下的房间出来。请你帮小明计算下他最多可以收集到多少价值的宝物?输入格式:输入第一行给出两个正整数m,n(1=<m,n<=2000),随后给出m行数据,每行都包括n个正整数,中间用空格分割。输出格式:输出收集到的最大价值v,题目保证v<10^9。输入样例:4 41 18 9 37 10 6 125 13原创 2020-12-22 21:41:19 · 841 阅读 · 0 评论 -
PTA——矩阵链相乘问题
矩阵链相乘问题矩阵的乘法定义如下:设A是m×p的矩阵,B是p×n的矩阵,则A与B的乘积为m×n的矩阵,记作C=AB,其中,矩阵C中的第i行第j列元素cij 可以表示为:当多个矩阵相乘时,采用不同的计算顺序所需的乘法次数不相同。例如,A是50×10的矩阵,B是10×20的矩阵,C是20×5的矩阵, 计算ABC有两种方式:(AB)C和A(BC),前一种需要15000次乘法计算,后一种则只需3500次。设A1 ,A2,…,An 为矩阵序列,Ai是阶为Pi−1 ∗Pi的矩阵(1≤i≤n)。试确定矩原创 2020-12-21 19:27:42 · 1502 阅读 · 1 评论 -
PTA——回文串问题
回文串问题一个字符串,如果从左到右读和从右到左读是完全一样的,比如"aba",我们称其为回文串。现在给你一个字符串,可在任意位置添加字符,求最少添加几个字符,才能使其变成一个回文串。输入格式:任意给定的一个字符串,其长度不超过1000.输出格式:能变成回文串所需添加的最少字符数。输入样例:在这里给出一组输入。例如:Ab3bdAbb输出样例:在这里给出相应的输出。例如:21思路:创建一个和原子符串(s)相反的字符串(t),当字符串为回文串的时候 ,s == t,因为只能添加字原创 2020-12-20 13:25:32 · 1069 阅读 · 0 评论 -
PTA——0-1背包(动态规划)
0-1背包给定n(n<=100)种物品和一个背包。物品i的重量是wi,价值为vi,背包的容量为C(C<=1000)。问:应如何选择装入背包中的物品,使得装入背包中物品的总价值最大? 在选择装入背包的物品时,对每种物品i只有两个选择:装入或不装入。不能将物品i装入多次,也不能只装入部分物品i。输入格式:共有n+1行输入: 第一行为n值和c值,表示n件物品和背包容量c; 接下来的n行,每行有两个数据,分别表示第i(1≤i≤n)件物品的重量和价值。输出格式:输出装入背包中物品的最大总价值。原创 2020-12-18 21:55:54 · 779 阅读 · 1 评论 -
PTA——最大子段和
最大子段和给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。要求算法的时间复杂度为O(n)。输入格式:输入有两行:第一行是n值(1<=n<=10000);第二行是n个整数。输出格式:输出最大子段和。输入样例:在这里给出一组输入。例如:6-2 11 -4 13 -5 -2输出样例:在这里给出相应的输出。例如:20#include&原创 2020-12-17 17:18:31 · 779 阅读 · 0 评论 -
PTA——跳一跳
跳一跳微信小程序中的跳一跳相信大家都玩过。emmm???只学习不玩游戏?那就吃亏了…好好读题理解吧。 简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。 如果跳到了方块上,但没有跳到方块的中心则获得1分;跳到方块中心时,若上一次的得分为1分或这是本局游戏的第一次跳跃则此次得分为2分,否则此次得分比上一次得分多两分(即连续跳到方块中心时,总得分将+2,+4,+6,+8…)。 现在给出一个人跳一跳的全过程,请你求出他本局游戏的得分(按照题目描述的原创 2020-12-16 20:29:22 · 388 阅读 · 1 评论 -
PTA——八皇后问题
八皇后问题在国际象棋中,皇后是最厉害的棋子,可以横走、直走,还可以斜走。棋手马克斯·贝瑟尔 1848 年提出著名的八皇后问题:即在 8 × 8 的棋盘上摆放八个皇后,使其不能互相攻击 —— 即任意两个皇后都不能处于同一行、同一列或同一条斜线上。例如:现在我们把棋盘扩展到 n×n 的棋盘上摆放 n 个皇后,请问该怎么摆?请编写程序,输入正整数 n,输出全部摆法(棋盘格子空白处显示句点“.”,皇后处显示字母“Q”,每两个字符之间空一格)。输入格式正整数 n(n>0)输出格式若问题有解,则输原创 2020-12-15 19:24:00 · 2717 阅读 · 0 评论 -
PTA——最佳调度问题
最佳调度问题假设有n(n<=20)个任务由k(k<=20)个可并行工作的机器完成。完成任务i需要的时间为ti。 试设计一个算法,对任意给定的整数n和k,以及完成任务i 需要的时间为ti ,i=1~n。计算完成这n个任务的最佳调度,使得完成全部任务的时间最早。输入格式:输入数据的第一行有2 个正整数n和k。第2 行的n个正整数是完成n个任务需要的时间。输出格式:将计算出的完成全部任务的最早时间输出到屏幕。输入样例:在这里给出一组输入。例如:7 32 14 4 16 6 5 3原创 2020-12-14 20:18:19 · 1128 阅读 · 0 评论 -
PTA——666
666小明有一张m*n的好习惯记录卡,记录每一天的好习惯目标达成度(数字0-9表示)。某天目标完成达成,就在当天的格子里写上数字6,目标没有完全达成就写上一个小于6的数字(0-5),目标超额完成就写上一个大于6的数字(7-9)。记录卡上如果能找到一条长度为3的路径并且路径上的三个数字都大于等于6(这里的路径是指从某个格子出发,可以向左、右、上、下格子移动,并且不能重复经过一个格子),则小明就能得到一个“666”奖励。请你帮小明统计下他总共能得到多少“666”奖励。输入格式:输入第一行给出两个正整数m原创 2020-12-13 20:19:31 · 713 阅读 · 0 评论 -
PTA——递归实现逆序输出整数
递归实现逆序输出整数本题目要求读入1个正整数n,然后编写递归函数reverse(int n)实现将该正整数逆序输出。输入格式:输入在一行中给出1个正整数n。输出格式:对每一组输入,在一行中输出n的逆序数。输入样例:12345输出样例:54321#include<iostream>using namespace std;int reverse(int n){ cout<<n%10; if(n>=10){ n=n/10;原创 2020-12-12 21:40:25 · 1463 阅读 · 0 评论 -
PTA——整数拆分
整数拆分将一个正整数拆分成若干个正整数的和。输入格式:一个正整数n输出格式:若干行,每行一个等式(每个数或者等号间都有一个空格,第一个数前没有空格,最后一个数后面没有空格,数与数之间要求非降序排列)。最后一行给出解的总个数输入样例:在这里给出一组输入。例如:4输出样例:在这里给出相应的输出。例如:4 = 1 + 1 + 1 + 14 = 1 + 1 + 24 = 1 + 34 = 2 + 24#include<iostream>using namespace原创 2020-12-11 21:33:11 · 887 阅读 · 0 评论 -
PTA——工作分配问题
工作分配问题设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。输入格式:输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。输出格式:将计算出的最小总费用输出到屏幕。输入样例:在这里给出一组输入。例如:310 2 32 3 43 4 5输出样例:在这里给出相应的输出。例如:9#include<iostream>u原创 2020-12-10 20:44:18 · 694 阅读 · 0 评论 -
PTA——百鸡问题扩展-N鸡问题
百鸡问题扩展-N鸡问题N元钱买N只鸡,公鸡每只5元,母鸡每只3元,小鸡1元3只,N元钱必须刚好买N只鸡,而且鸡必须整只买,不能劈开买。有几种买法呢?这就是N鸡问题。输入格式:在一行中输入一个正整数N。(N<500)输出格式:在一行中输出两个整数c s,中间用一个空格隔开,表示N元钱买N只鸡共有 c 种买法,且所有买法的公鸡数量之和是 s。如果无解,则 s 为 -1.输入样例1:100输出样例1:4 24输入样例2:1输出样例2:0 -1#include<i原创 2020-12-09 20:37:36 · 2348 阅读 · 0 评论 -
PTA——换硬币
换硬币将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?输入格式:输入在一行中给出待换的零钱数额x∈(8,100)。输出格式:要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。输入样例:13输出样例:fen5:2, fen2:1, fen1:1, total:4fen5原创 2020-12-08 20:21:01 · 592 阅读 · 0 评论 -
PTA——喷水装置
喷水装置长L米,宽W米的草坪里装有n个浇灌喷头。每个喷头都装在草坪中心线上(离两边各W/2米)。我们知道每个喷头的位置(离草坪中心线左端的距离),以及它能覆盖到的浇灌范围。请问:如果要同时浇灌整块草坪,最少需要打开多少个喷头?输入格式:输入包含若干组测试数据。第一行一个整数T表示数据组数。每组数据的第一行是整数n、L和W的值,其中n≤10 000。接下来的n行,每行包含两个整数,给出一个喷头的位置和浇灌半径。如图1所示的示意图是样例输入的第一组数据所描述的情况。输出格式:对每组测试数据原创 2020-12-07 20:40:21 · 334 阅读 · 0 评论 -
PTA——看电影
看电影终于到周末了,明明是特别喜欢看电影。他想在一天内尽量多的看到完整的多部电影。 现在他把他喜欢的电影的播放时间表给你,希望你能帮他合理安排。输入格式:输入包含多组测试数据。每组输入的第一行是一个整数n(n<=100),表示明明喜欢的电影的总数。 接下来n行,每行输入两个整数si和ei(1<=i<=n),表示第i个电影的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。 当n=0时,输入结束。输出格式:对于每组输入,输出能完整看到的电影的个数。输入样例:在这里给出一原创 2020-12-06 20:46:47 · 1143 阅读 · 0 评论 -
PTA——最优合并问题
最优合并问题题目来源:王晓东《算法设计与分析》给定k 个排好序的序列, 用 2 路合并算法将这k 个序列合并成一个序列。 假设所采用的 2 路合并算法合并 2 个长度分别为m和n的序列需要m+n-1 次比较。试设 计一个算法确定合并这个序列的最优合并顺序,使所需的总比较次数最少。 为了进行比较,还需要确定合并这个序列的最差合并顺序,使所需的总比较次数最多。输入格式:第一行有 1 个正整数k,表示有 k个待合并序列。 第二行有 k个正整数,表示 k个待合并序列的长度。输出格式:输出最多比较次数和最原创 2020-12-05 19:01:40 · 1021 阅读 · 0 评论 -
PTA——装箱问题
装箱问题假设有N项物品,大小分别为s1、s2、… 、si 、… 、sN,其中si为满足1≤si≤100的整数。要把这些物品装入到容量为100的一批箱子(序号1-N)中。装箱方法是:对每项物品, 顺序扫描箱子,把该物品放入足以能够容下它的第一个箱子中。请写一个程序模拟这种装箱过程,并输出每个物品所在的箱子序号,以及放置全部物品所需的箱子数目。输入格式:输入第一行给出物品个数N(≤1000);第二行给出N个正整数si(1≤si≤100,表示第i项物品的大小)。输出格式:按照输入顺序输原创 2020-12-04 21:42:39 · 1392 阅读 · 0 评论 -
PTA L1-030
PAT L1-030 一帮一(15分)#include<iostream>using namespace std;struct student{ char name[10]; int gender;};int main(){ student s[55]; int n; cin>>n; for(int i=0;i<n;i++){ cin>>s[i].gender>>s[i].name; } for(int i=0原创 2020-10-13 21:57:30 · 74 阅读 · 0 评论 -
PTA L1-003 L1-015
L1-003 个位数统计 (15分)#include<iostream>#include<string.h>using namespace std;int main(){ char a[1001]; int b[10]={0}; cin>>a; int d; for(int i=0;i<strlen(a);i++){ d=a[i]-48; b[d]++; } for(i原创 2020-10-12 21:43:24 · 59 阅读 · 0 评论 -
PTA真题——1011 1002 1004
1011 A+B 和 C (15分)给定区间 [−2^31,2 ^31 ] 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。输入格式:输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。输出格式:对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,否则输出 Case #X: false,其中 X 是测试用例的编号(从 1 开始)。输入样例:41 2 3原创 2020-09-22 20:02:55 · 575 阅读 · 0 评论 -
PTA真题——1001 1006
1001 害死人不偿命的(3n+1)猜想 (15分)卡拉兹(Callatz)猜想:对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题目不是证明卡拉兹猜想原创 2020-09-21 20:43:57 · 190 阅读 · 0 评论