程序设计与算法二
野人时代
这个作者很懒,什么都没留下…
展开
-
PTA数组循环右移,代码少运行快直接输入中完成,快速提交作业
PTA数组循环右移,代码少速度快直接输入中完成计算机编程题目:1008 数组元素循环右移问题 (20分)一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方...原创 2020-04-13 09:30:03 · 479 阅读 · 0 评论 -
学习笔记《数据结构》作业之 两个有序链表序列的交集
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 2 5 -12 4 5 8 10 -1输出样例:2 ...原创 2020-03-18 22:09:25 · 257 阅读 · 0 评论 -
学习笔记《数据结构》两个有序序列的中位数
两个有序序列的中位数已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0,A1,⋯,AN−1的中位数指A(N−1)/2的值,即第⌊(N+1)/2⌋个数(A0为第1个数)。输入格式:输入分三行。第一行给出序列的公共长度N(0<N≤100000),随后每行输入一个序列的信息,即N个非降序排列的整数。数字用空格间隔。输出格式...原创 2020-03-13 23:28:22 · 381 阅读 · 0 评论 -
学习笔记《数据结构》之装箱问题
装箱问题假设有N项物品,大小分别为s1、s2、…、si、…、sN,其中si为满足1≤si≤100的整数。要把这些物品装入到容量为100的一批箱子(序号1-N)中。装箱方法是:对每项物品, 顺序扫描箱子,把该物品放入足以能够容下它的第一个箱子中。请写一个程序模拟这种装箱过程,并输出每个物品所在的箱子序号,以及放置全部物品所需的箱子数目。输入格式:输入第一行给...原创 2020-03-13 21:27:59 · 421 阅读 · 0 评论 -
学习笔记之《数据结构》数组循环左移
数组循环左移本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置,即将a中的数据由(a0 a1 ⋯an−1 )变换为(am ⋯an−1 a0 a1 ⋯am−1 )(最前面的m个数循环移至最后面的m个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何...原创 2020-03-13 18:29:27 · 2392 阅读 · 2 评论 -
学习笔记之动态规划(一)最长上升子序列及最长公共子序列
例题:最长上升子序列(百练2757)问题描述一个数的序列ai,当a 1 < a 2 < … < a S 的时候,我们称这个序列是上升的。对于给定的一个序列(a 1 , a 2 , …, a N ),我们可以得到一些上升的子序列(a i1 , a i2 , …, a iK ),这里1 <= i1 <i2 < … < iK <= N。比如,对于序列(...转载 2020-03-02 11:27:23 · 166 阅读 · 0 评论 -
递归到动规的一般转化方法
递归到动规的一般转化方法 递归函数有n个参数,就定义一个n维的数组,数组的下标是递归函数参数的取值范围,数组元素的值是递归函数的返回值,这样就可以从边界值开始,逐步填充数组,相当于计算递归函数值的逆过程。将原问题分解为子问题 把原问题分解为若干个子问题,子问题和原问题形式相同或类似,只不过规模变小了。子问题都解决,原问题即解决(数字三角形例)。 子问题的解一旦求出就会被保存,所以...原创 2020-03-01 10:51:05 · 127 阅读 · 0 评论 -
动态规划之数字三角形举一反三
动态规划(一)例题一、数字三角形(POJ1163)在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或右下走。只需要求出这个最大和即可,不必给出具体路径。三角形的行数大于1小于等于100,数字为 0 - 99输入格式:5 //三角形行数。下面是三角形73 88 1 02 7 4 44 5 2 6 5要求输出最...原创 2020-02-28 20:34:21 · 282 阅读 · 0 评论 -
学习笔记程序设计与算法之分治
分治的基本概念 把一个任务,分成形式和原任务相同,但规模更小的几个部分任务(通常是两个部分),分别完成,或只需要选一部完成。然后再处理完成后的这一个或几个部分的结果,实现整个任务的完成。3分治的生活实例 --称假币 16硬币,有可能有1枚假币,假币比真币轻。有一架天平,用最少称量次数确定有没有假币,若有的话,假币是哪一枚。4分治的生活实例 – 称假币 8 – 8 一称,发现无假...转载 2020-02-28 15:29:50 · 136 阅读 · 0 评论 -
学习笔记程序设计与算法之特殊密码锁
特殊密码锁总时间限制: 1000ms 内存限制: 1024kB描述有一种特殊的二进制密码锁,由n个相连的按钮组成(n<30),按钮有凹/凸两种状态,用手按按钮会改变其状态。然而让人头疼的是,当你按一个按钮时,跟它相邻的两个按钮状态也会反转。当然,如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮。当前密码锁状态已知,需要解决的问题是,你至少需要按多少次按钮,才能将...原创 2020-02-24 17:07:37 · 180 阅读 · 0 评论 -
学习笔记程序设计与算法之逆波兰与算术表达式
例题一:逆波兰表达式求值逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3。逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 +3) * 4的逆波兰表示法为* + 2 3 4。本题求解逆波兰表达式的值,其中运算符包括+ - * /四个。输入输入为一行,其中运算符和运算数之间都用空格分隔,运算数是浮点数输出输出...原创 2020-02-23 18:04:06 · 349 阅读 · 0 评论 -
程序设计与算法学习笔记之熄灯问题
熄灯问题有一个由按钮组成的矩阵, 其中每行有6个按钮, 共5行– 每个按钮的位置上有一盏灯– 当按下一个按钮后,,该按钮以及周围位置(上边, 下边,左边, 右边)的灯都会改变状态。– 如果灯原来是点亮的, 就会被熄灭– 如果灯原来是熄灭的, 则会被点亮• 在矩阵角上的按钮改变3盏灯的状态• 在矩阵边上的按钮改变4盏灯的状态• 其他的按钮改变5盏灯的状态 与一盏灯毗邻的多个按钮被...原创 2020-02-22 12:21:14 · 352 阅读 · 0 评论 -
程序设计与算法笔记之称硬币
称硬币有12枚硬币。其中有11枚真币和1枚假币。假币和真币重量不同,但不知道假币比真币轻还是重。现在,用一架天平称了这些币三次,告诉你称的结果,请你找出假币并且确定假币是轻是重(数据保证一定能找出来)。 输入第一行是测试数据组数。每组数据有三行,每行表示一次称量的结果。银币标号为A-L。每次称量的结果用三个以空格隔开的字符串表示:天平左边放置的硬币 天平右边放置的硬币 平衡...原创 2020-02-21 20:53:39 · 307 阅读 · 0 评论