
PTA测试题
此题只针对pta上的测试题,题解并不一定是最优解法,但都能够通过测试点
小白编码
Java工程师,二本土狗已进大厂
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
7-57 租用游艇问题 (20 分)
题目来源:王晓东,《算法设计与分析》长江游艇俱乐部在长江上设置了n个游艇出租站1,2,…,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i到游艇出租站j之间的租金为r(i,j),1<=i<j<=n。试设计一个算法,计算出从游艇出租站1 到游艇出租站n所需的最少租金。输入格式:第1 行中有1 个正整数n(n<=200),表示有n个游艇出租站。接下来的第1到第n-1 行,第i行表示第i站到第i+1站,第i+2站, … , 第n站的租金。输出格原创 2021-12-26 15:55:18 · 4678 阅读 · 0 评论 -
7-14 整数拆分 (30 分)
给定一个整数n,将其无序拆分成最大数为k的拆分数,(n,k不超出100) 要求:所有的拆分方案不重复。 如当n=4,k=4时,一共有5种拆分方案,拆分如下:(1)4=1+1+1+1(2)4=1+1+2(3)4=1+3(4)4=2+2(5)4=4输入格式:每一行输入一组整数n,k,遇到键盘结束符^Z或文件结束符EOF时结束输入。输出格式:按行输出每组的拆分方案数。输入样例:4,45,4结尾无空行输出样例:56思路:刚开始用dfs进行暴力搜索发现运行超时,因此想到用dp动原创 2021-12-25 16:54:38 · 2018 阅读 · 0 评论 -
7-4 房间 (30 分)
终于到了假期了,老师决定带领ACM队员们出去游山玩水,计划出行两天,这样的话中间就需要找个地方住宿一晚。恰巧,老师带领队员们来到了这么一所酒店,这所酒店只有双人间(最多住两人)和三人间(最多住三人),但是价格不同,现在我们算上老师,一共有 n 个人,酒店的双人间价格是 a 元,三人间价格是 b 元,现在老师想知道怎样安排房间才能使得花销最小,你能帮助老师计算出最小的花销吗?输入格式:第一行给出一个正整数 T(1≤T≤1000),代表测试数据的组数。接下来 T 行每行给出三个正整数 n,a,b,1≤n原创 2021-12-13 10:51:01 · 903 阅读 · 0 评论 -
7-8 删数问题 (10 分)
有一个长度为n(n <= 240)的正整数,从中取出k(k < n)个数,使剩余的数保持原来的次序不变,求这个正整数经过删数之后最小是多少。输入格式:n和k输出格式:一个数字,表示这个正整数经过删数之后的最小值。输入样例:178543 4结尾无空行输出样例:13结尾无空行知识点:贪心问题,思路:贪心问题,首先数据用string进行存储,要想得到最小数,首先高位数应该小这样得到的数才会比较小,因此我们就可以判断if (s[i - 1] > s[i])原创 2021-12-07 19:17:11 · 1424 阅读 · 0 评论 -
c++字符串问题
**解决c++字符串问题ps:本文在以后还有可能会更新本人对c++的字符串也不是太了解,本人感觉c++字符串没有Java的好用,就先跟新到这**#include<bits/stdc++.h>using namespace std;int main() { //一. 数字转字符串问题 /* string to_string(int value) string to_string(long value) string to_string(double value)原创 2021-12-07 17:26:27 · 176 阅读 · 0 评论 -
7-2 士兵排队 (100 分)
在一个划分成网格的操场上,n个士兵散乱地站在网格点上。网格点用整数坐标(x,y)表示。士兵们可以沿网格边往上、下、左、右移动一步,但在同一时刻任一网格点上只能有一名士兵。按照军官的命令,士兵们要整齐地列成一个水平队列,即排列成(x,y),(x+1,y),…,(x+n-1,y)。如何选择x和y的值才能使士兵们以最少的总移动步数排成一行。编程计算使所有士兵排成一行需要的最少移动步数。题目引自POJ输入格式:第1行是士兵数n,1≤n≤10000。接下来n行是士兵的初始位置,每行有2个整数x和y,-1000原创 2021-11-30 20:12:16 · 1294 阅读 · 0 评论 -
7-8 最短路径 (20 分)
给定一个有N个顶点和E条边的无向图,顶点从0到N−1编号。请判断给定的两个顶点之间是否有路径存在。如果存在,给出最短路径长度。 这里定义顶点到自身的最短路径长度为0。 进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。 随后E行,每行给出一条边的两个顶点。每行中的数字之间用1空格分隔。 最后一行给出两个顶点编号i,j(0≤i,j<N),i和j之间用空格分隔。输出格式:如果i和j之间存在原创 2021-11-28 21:10:58 · 1152 阅读 · 0 评论 -
7-2 回文数 (20 分)
回文数是一种很有趣的数,正反读起来都一样,比如123321或者123454321,单个的数字还有0,都是回文数。但是我们熟悉的回文数都是十进制下的,现在我们加大难度,对一个给定的数,想知道它在其他进制下是不是回文数。输入格式:在一行中给出2的整数N和R,其中N是不超过10的9次方的正整数,是需要判断的数,R是基,R=10表示十进制,R=2表示是二进制,R是不小于2,不超过10的9次方的正整数。输出格式:对每一组输入,如果N在R进制下式回文数,那么就就第一行输出“Yes”,否则,输出“No”,在第二行原创 2021-11-28 20:07:26 · 1605 阅读 · 1 评论 -
7-9 最长路径 (10 分)
给定一个正权有向无环图和图中的两个顶点,请编写程序找出这两个顶点间的最长路径,若两点间存在多条最长路径,则输出字典序最小者。假定图中包含n个顶点,编号为0至n-1。注:字典序,即对象在字典中的顺序。对于两个数字序列,从第一个数字开始比较,当某一个位置的数字不同时,该位置数字较小的序列,字典序较小,例如1 2 3 9比1 2 4 5小,1 2 8 9比1 2 10 3小。输入格式:输入第一行为3个正整数n和e,分别为图的顶点数和边数,均不超过50。接下来e行表示每条边的信息,每行为3个整数a、b、c,其原创 2021-11-24 23:07:32 · 937 阅读 · 0 评论 -
7-10 求解矩阵最小路径和问题 (12 分)
给定一个m行n列的矩阵,从左上角开始每次只能向右或者向下移动,最后到达右下角的位置,路径上的所有数字累加起来作为这条路径的路径和。求所有路径和中最小路径和。输入格式:首先输入行数m及列数n,接下来输入m行,每行n个数。输出格式:输出第一行为最小路径(假定测试数据中的最小路径唯一),第2行为最小路径和。输入样例1:4 41 3 5 98 1 3 45 0 6 18 8 4 0结尾无空行输出样例1:1 3 1 0 6 1 0 12知识点:动态规划思路:大部分求最小(原创 2021-11-23 20:48:42 · 6224 阅读 · 0 评论 -
7-6 连续因子 (20 分)
一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。输入格式:输入在一行中给出一个正整数 N(1<N<231)。输出格式:首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1因子2……*因子k 的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。输入样例:630输出样例:35*6*原创 2021-11-23 18:42:25 · 145 阅读 · 0 评论 -
7-1 找第k小的数 (20 分)
设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数。提示:函数int partition(int a[],int left,int right)的功能是根据a[left]a[right]中的某个元素x(如a[left])对a[left]a[right]进行划分,划分后的x所在位置的左段全小于等于x,右段全大于等于x,同时利用x所在的位置还可以计算出x是这批数据按升非降序排列的第几个数。因此可以编制int find(int a[],int left,int原创 2021-11-23 11:40:53 · 1486 阅读 · 0 评论 -
7-5 最长连续递增子序列 (20 分)
给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。输入格式:输入第1行给出正整数n(≤105);第2行给出n个整数,其间以空格分隔。输出格式:在一行中输出第一次出现的最长连续递增子序列,数字之间用空格分隔,序列结尾不能有多余空格。输入样例:151 9 2 5 7 3 4 6 8 0 11 15 17 17 10结尾无空行输出样例:3 4 6 8结尾无空行知识点:原创 2021-11-23 11:30:27 · 348 阅读 · 0 评论 -
7-7 最大连续子序列 (10 分)
给定K个整数的序列{ n 1 ,n 2 ,…,n K },其任意连续子序列可表示为{ n i ,n i+1 ,…,n j },其中 1≤i≤j≤K。最大连续子序列是所有连续子序列中元素和最大的一个。例如,给定序列{ -2,11,-4,13,-5,-2 },其最大连续子序列为{ 11,-4,13 },最大和为20。 要求编写程序得到最大和,并输出子序列的第一个元素和最后一个元素。输入格式:测试数据有多组。每组测试数据输入两行,第一行给出一个正整数K(0<K<10000),第二行给出K个整数原创 2021-11-23 11:15:49 · 1634 阅读 · 0 评论 -
7-3 跳马问题 (20 分)
给定m*n(mn<=100)的棋盘,左上角的点坐标(1,1),一匹马从(1,2)点开始沿着日字型(有8种)跳完棋盘上所有点,且每一个点都只能跳一次,马每一步从(x,y)点起跳时优先选择的方向对应坐标偏移为:{2,1},{1,2},{-1,2},{-2,1},{-2,-1},{-1,-2},{1,-2},{2,-1}。有的棋盘会有很多种跳法,现在比较感兴趣的是马的第k种跳法是什么?输入格式:一行三个整数m,n,k。输出格式:输出马的第k种跳法,如果马无法跳完棋盘所有点则输出impossible,原创 2021-11-19 13:13:30 · 772 阅读 · 0 评论 -
7-10 集合划分 (10 分)
当n=4 时,集合{1,2,3,4}可以划分为15个不同的非空子集如下:{{1},{2},{3},{4}},{{1,2},{3},{4}},{{1,3},{2},{4}},{{1,4},{2},{3}},{{2,3},{1},{4}},{{2,4},{1},{3}},{{3,4},{1},{2}},{{1,2},{3,4}},{{1,3},{2,4}},{{1,4},{2,3}},{{1,2,3},{4}},{{1,2,4},{3}},{{1,3,4},{2}},{{2,3,4}原创 2021-11-16 22:44:34 · 1421 阅读 · 0 评论 -
7-5 病毒溯源 (25 分)
病毒容易发生变异。某种病毒可以通过突变产生若干变异的毒株,而这些变异的病毒又可能被诱发突变产生第二代变异,如此继续不断变化。现给定一些病毒之间的变异关系,要求你找出其中最长的一条变异链。在此假设给出的变异都是由突变引起的,不考虑复杂的基因重组变异问题 —— 即每一种病毒都是由唯一的一种病毒突变而来,并且不存在循环变异的情况。输入格式:输入在第一行中给出一个正整数 N(≤104),即病毒种类的总数。于是我们将所有病毒从 0 到 N−1 进行编号。随后 N 行,每行按以下格式描述一种病毒的变异情况原创 2021-11-15 21:33:33 · 1146 阅读 · 0 评论 -
7-1 找零钱*** (20 分)
收银员现有 n 张面值分别为 v 的纸币。若找零金额为 m,则一共有多少种找零方法?注:0<n≤1000,0<v输入格式输出格式若有解,则输出全部找零方案,每输出一种 若无解,则输出“None”输入样例163 1 4 3 2 79结尾无空行输出样例13 1 3 23 4 24 3 22 7输入样例255 3 4 6 72结尾无空行输出样例2None知识点:回溯,剪枝。思路:本题为子集问题,(即可以分为选与不选两种情况,不需要用个for循原创 2021-11-15 20:22:35 · 2330 阅读 · 0 评论 -
7-4 八皇后问题 (20 分)
会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。 对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2…b8,其中bi为相应摆法中第i行皇后所处的列数。已经知道8皇后问题一共有92组解(即92个不同的皇后串)。 给出一个数b,要求输出第b个串。串的比较是这样的:皇后串x置于皇后串y之前,当且仅当将x视为整数时比y小。。输入格式:第1行是测试数据的组数n,后面跟着原创 2021-11-15 20:08:55 · 1147 阅读 · 0 评论 -
7-14 走迷宫 (20 分)
在一个 m×n 的迷宫里,从起点开始,依次按东(右)、南(下)、西(左)、北(上) 4 个方向探索通路,直至达到终点为止。迷宫由字符组成,W 表示墙,. 表示空地,请编写程序,输出你找到的首条通道。输入格式迷宫的行数 m 和列数 n (0<m,n≤100)m 行 n 列字符起点的行号(0 ~ m - 1)和列号(0 ~ n - 1)终点的行号(0 ~ m - 1)和列号(0 ~ n - 1)输出格式若问题无解,则输出 None若问题有解,则输出迷宫:W 表示墙. 表示未走过的空地原创 2021-11-09 21:43:10 · 3993 阅读 · 3 评论 -
7-7 自然数拆分问题 (60 分)
一个整数N(N > 1)可以拆分成若干个大于等于1的自然数之和,请你输出所有不重复的拆分方式。若满足集合A=B,则称这两种拆分方式是重复的。例如 6 = 3 + 2 和 6 = 2 + 3, 就是重复的拆分方式。输入格式:一个正整数N(1≤N≤52)。注意:本题N的上限52,是经过PTA平台服务器测试后得到的上限,能够保证较好的搜索策略在PTA提交,在1s内求解。本地PC机上,即使较好方法运行时间也可能大于1s,如果觉得方法没问题,可以先提交试试。输出格式:按照拆分方案的字典序由小大到大原创 2021-11-09 19:51:01 · 2342 阅读 · 0 评论 -
7-9 幸运位置 (10 分)
小明站在一个数字迷宫里,若其身边上、下、左、右四个相邻位置存在2个及以上的偶数,则小明认为其所站位置是一个幸运位置。给你一个数字迷宫(所有数字都是自然数),请你输出该迷宫的幸运位置,行号小的优先输出,若同一行号存在多个幸运位置,则按列号小的优先。输入格式:首先输入一个整数T(1<=T<10),表示测试组数。 每组测试首先在一行上输入两个整数m,n(2<m,n<21);然后输入一个的数字迷宫,包含m行n列的数字,每行数字之间以一个空格分隔。输出格式:对于每组测试,若不存在幸运位原创 2021-11-07 21:19:43 · 834 阅读 · 1 评论 -
7-12 0/1背包问题 (30 分)
0/1背包问题。给定一载重量为W的背包及n个重量为wi、价值为vi的物体,1≤i≤n,要求而且重量和恰好为W具有最大的价值。输入格式:第一行输入背包载重量W及背包个数n,再依次输入n行,每行为背包重量wi和价值vi。输出格式:第一行输出装入背包内的物体编号(末尾有空格),若没有任何物品能装入,输出: No,第二行输出背包内的物体总价值。输入样例1:5 102 62 36 55 44 6结尾无空行输出样例1:1 2 5 15结尾无空行输入样例2:2 1011 213原创 2021-11-07 14:46:21 · 3617 阅读 · 1 评论 -
7-6 约瑟夫问题 (10 分)
任务描述约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。输入格式:每行是用空格分开的两个整数,第一个是 n, 第二个是 m ( 0 < m,n <=300)。最后一行是:0 0输出格式:对于每行输入数据(最后一行除外),输出数据也是一行,即最后猴王的编号输入样例:6 212 48 3原创 2021-11-06 19:35:50 · 1634 阅读 · 0 评论 -
7-6 最佳组队问题 (10 分)
双人混合ACM程序设计竞赛即将开始,因为是双人混合赛,故每支队伍必须由1男1女组成。现在需要对n名男队员和n名女队员进行配对。由于不同队员之间的配合优势不一样,因此,如何组队成了大问题。 给定n×n优势矩阵P,其中P[i][j]表示男队员i和女队员j进行组队的竞赛优势(0<P[i][j]<10000)。设计一个算法,计算男女队员最佳配对法,使组合出的n支队伍的竞赛优势总和达到最大。输入格式:测试数据有多组,处理到文件尾。每组测试数据首先输入1个正整数n(1≤n≤9),接下来输入n行,每行n个原创 2021-11-05 20:37:49 · 2897 阅读 · 1 评论 -
PTA:7-10 深入虎穴 (25 分)
著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报。已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门。每一扇门背后或者是一个房间,或者又有很多条路,同样是每条路通向一扇门…… 他的手里有一张表格,是其他间谍帮他收集到的情报,他们记下了每扇门的编号,以及这扇门背后的每一条通路所到达的门的编号。007 发现不存在两条路通向同一扇门。内线告诉他,情报就藏在迷宫的最深处。但是这个迷宫太大了,他需要你的帮助 —— 请编程帮他找出距离入口最远的那扇门。输入格式:输入首先在原创 2021-11-03 21:39:02 · 824 阅读 · 0 评论 -
7-4 工作分配问题 (20 分)
7-4 工作分配问题 (20 分)设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。输入格式:输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。输出格式:将计算出的最小总费用输出到屏幕。输入样例:在这里给出一组输入。例如:310 2 32 3 43 4 5输出样例:在这里给出相应的输出。例如:9知识点:本题用到了回溯法,(即原创 2021-11-05 19:45:40 · 1925 阅读 · 0 评论 -
PTA:7-10 图深度优先遍历 (10 分)
编写程序对给定的有向图(不一定连通)进行深度优先遍历,图中包含n个顶点,编号为0至n-1。本题限定在深度优先遍历过程中,如果同时出现多个待访问的顶点,则优先选择编号最小的一个进行访问,以顶点0为遍历起点。输入格式:输入第一行为两个整数n和e,分别表示图的顶点数和边数,其中n不超过20000,e不超过50。接下来e行表示每条边的信息,每行为两个整数a、b,表示该边的端点编号,但各边并非按端点编号顺序排列。输出格式:输出为一行整数,每个整数后一个空格,即该有向图的深度优先遍历结点序列。输入样例1:3原创 2021-11-04 23:32:09 · 4997 阅读 · 0 评论