- 博客(29)
- 收藏
- 关注
原创 动态规划——试剂稀释
题目描述一种药剂可以被稀释成不同的浓度供病人使用,且只能稀释不能增加浓度;又已知医院规定同一瓶药剂只能给某个病人以及排在他后面的若干人使用。现为了能最大限度利用每一瓶药剂(不考虑每一瓶容量),在给出的一个病人用药浓度序列(病人的顺序不能改变)中找出能同时使用一瓶药剂的最多人数。关于输入有两行,第一行是一个整数n,为病人的人数,假设不超过100;第二行为一个浮点数(double)序列,为每个病人的用药浓度,浮点数之间用一个空格隔开。关于输出输出一行,该行包含一个整数,为所求的最大.
2021-12-24 19:54:29 1135
原创 动态规划——插入乘号
题目描述给定一个非负整数,用k个乘号将其分割,使得乘积最大。例如:在整数12345中插入两个乘号,有以下插入法:1*2*345 1*23*45 1*234*512*3*45 12*34*5123*4*5其中最大值是123*4*5 = 2460关于输入一行两个非负整数,非负整数s(0 <= s <= 10^10)和乘号的个数k(0 <= k < s的位数)关于输出一行一个整数,即乘积的最大值例子输入12345 2例子输...
2021-12-24 17:37:47 1963
原创 区间合并。
题目描述给定n个闭区间[strat, end],其中i= 1,2,..., n,任意两个相邻或相交的闭区间可以合并成为一个闭区间。例如,[1,2]和[2,3]可以合并为[1,3],[1,3]和[2,4]可以合并为[1,4],但是[1,2]和[3,4]不可以合并。关于输入第一行为一个整数n,2 <=n <= 100。表示输入的区间的数量之后n行,在第i行上(1 <= i <= n),为两个整数strat和end,整数之间用一个空格分隔,表示区间[strat, ...
2021-12-23 19:31:19 410
原创 Unix纪元
题目描述在著名的unix系统中,使用了一种简洁高效的时间表示方法,即:将1970年1月1日0点作为“unix纪元”的原点,从1970年1月1日开始经过的秒数存储为一个32位整数请编写一个程序,帮助把一个unix时间辍,转换成形如"YYYY-mm-dd HH:ii:ss"的格式,其中的字母分别代表YYYY4 位数字完整表示的年份mm 数字表示的月份,有前导零的 2 位数字dd 月份中的第几天,有前导零的2...
2021-12-21 00:15:39 553
原创 最大乘积。
题目描述给出一个数S,请你把它分解为若干个不同的正整数{a1,a2,...,an}之和,即a1+a2+...+an=S,并且使得a1*a2*...*an最大。关于输入一个正整数S(5<=S<=1000)关于输出输出分解后的结果,按从小到大的顺序输出。例子输入7例子输出3 4#include<cstdio>int main() { int m, i, len = 0; int num[10000] = { 0 };.
2021-12-17 22:57:07 544
原创 1125 W的密码
题目描述加密一条信息需要三个整数码, k1, k2 和 k3。字符[a-i] 组成一组, [j-r] 是第二组, 其它所有字符 ([s-z] 和下划线)组成第三组。 在信息中属于每组的字符将被循环地向左移动ki个位置。 每组中的字符只在自己组中的字符构成的串中移动。解密的过程就是每组中的字符在自己所在的组中循环地向右移动ki个位置。例如对于信息 the_quick_brown_fox 以ki 分别为 2, 3 和 1蔼进行加密。加密后变成 _icuo_bfnwhoq_kxert。观察在组[a-i.
2021-12-10 20:50:00 352
原创 动态规划——鸡蛋的硬度
题目描述最近XX公司举办了一个奇怪的比赛:鸡蛋硬度之王争霸赛。参赛者是来自世 界各地的母鸡,比赛的内容是看谁下的蛋最硬,更奇怪的是XX公司并不使用什么精密仪器来测量蛋的硬度,他们采用了一种最老土的办法--从高度扔鸡蛋--来 测试鸡蛋的硬度,如果一次母鸡下的蛋从高楼的第a层摔下来没摔破,但是从a+1层摔下来时摔破了,那么就说这只母鸡的鸡蛋的硬度是a。你当然可以找出各种 理由说明这种方法不科学,比如同一只母鸡下的蛋硬度可能不一样等等,但是这不影响XX公司的争霸赛,因为他们只是为了吸引大家的眼球,一个个鸡.
2021-12-08 16:20:39 184
原创 递归——平衡矩阵
描述 现在有一个n阶正整数方阵(n<=7),现在可以对矩阵的任意一行进行左移,具体操作为:每次对于某一行a_i1,a_i2,…,a_in进行一次左移,最左边的元素移动到这一行的末尾,其他元素均向左移动一位,即变为a_i2,a_i3,…,a_in,a_i1。对某一行可以执行任意次的左移。 现在我们的目标是:通过对矩阵的每一行进行若干次左移,使得矩阵中每列和的最大值最小。 关于输入 输入包含多组数据。 对于每组数据,第一行为一个正整数n(1<=n<=7),代表矩阵的阶。
2021-12-03 18:01:23 945
原创 函数——水淹七军
描述 随着最后通牒的递出,C国的总攻也开始了,由于C国在地形上的优势,C国总司令下令采用水攻,剿灭A国最后的有生力量。 地形图是一个M*N的矩阵,矩阵上每一个点都对应着当前点的高度。C国总司令将选择若干个点进行放水(放水……这个词很好很强大嘛……)。根据水往低处流的特性,水可以往四个方向的流动,被淹的地方的水面高度便和放水点的高度一样。然而,A国不是一马平川的,所以总会有地方是淹没不到的。你的任务很简单,判断一下A国司令部会不会被淹没掉。 我们将给你完整的地形图,然后给出A国司令部所在位置,
2021-12-02 19:17:53 361
原创 递归——有理数树
描述 二叉树指的是一种树形结构,它的每个结点有至多两个子节点。 现在有一个由有理数组成的无穷二叉树形状如下: 1/1 ______|______ | | 1/2 2/1 ___|___ ___|___ | | ...
2021-12-02 09:36:32 3279
原创 函数——相交的圆
描述 在一个二维直角坐标系中,有n个圆,每个圆用三个整数(xi, yi, ri)来描述(1<=i<=n),其中(xi, yi)表示圆心坐标,ri表示圆的半径。现在你需要判断这n个圆之间是否有相交(注意:两个圆重合或完全覆盖也算相交,但是相切不算)。如果相交,输出Yes,否则,输出No。 关于输入 输入的第一行给出一个整数n(2<=n<=1000),表示坐标系中圆的个数。 之后是n行输入,表示n个圆。每行三个整数,分别是xi, yi, ri。其中(0<=xi&l
2021-12-02 09:17:20 694
原创 函数——投机选考题
描述 命题小组在命题时,一般会根据考题的难易程度预计需要的时间和应给多少分。假设某地组织一次考试,总共出了 M 道考题(M < 1000),每道考题按递增顺序编号(第1道考题编号为 1,此后逐次增 1),且每道题目标记了分数和完成答题预计需要的时间。考试要求,考生必须连号答题,跳跃式答题只按连续部分的最大分数作为最终成绩。考生总希望在给定的时间内获得最高的总分数。考试开始时,考生只能依据每道题的分数和答题的预计时间快速选择开始题目。请设计一道程序,帮考生作出判断,从哪一道题目开始连号答题,才能在规
2021-12-02 08:40:40 289
原创 递归——图案计数
描述 一张画布里有n行*m列个格子,其中有的格子里有颜色填充,有的格子是空的没有颜色填充。现在需要你写一个程序来数出画布里边有颜色填充的格子构成了多少个图案,其中图案的定义为: 如果两个有颜色的格子边相邻或者角相邻(即横、纵两个方向上的位置差都不超过1),则他们属于同一个图案。 关于输入 第一行为两个整数n和m(1<=n, m<=200)。 之后的n行,每行为一个长度为m的字符串,构成了整个画布。字符串中,#表示颜色,-表示空白。 关于输出 一个整数,表示图案的个
2021-12-02 00:15:53 625
原创 函数——括号匹配问题
描述 在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算术式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号:首先输出原来字符串,下一行是和原字符串等长的一行,标出不能匹配的括号,其中不能匹配的左括号用"$"标注,不能匹配的右括号用"?"标注 关于输入 第一行一个正整数n,表示数据的组数。后面n行,每组数据一行,包含一个字符串,只包含左右括号和大小写字母,字符串长度不超过100 关于...
2021-12-01 16:45:53 1182
原创 函数——分割乘积
描述 给定一个整数,求插入两个乘号的最大乘积。 关于输入 只有一行,一个整数。 关于输出 所求出的最大乘积。 例子输入 4242 例子输出 336 提示 整数有正有负。 输入保证:如果按题目要求的乘法操作,不会使int发生溢出。 注意要函数中要对正负进行讨论!!#include<iostream>#include<cmath>;#include<cstring>usi
2021-12-01 00:22:57 1082
原创 递归——带通配符的字符串匹配
描述 通配符是一类键盘字符,当我们不知道真正字符或者不想键入完整名字时,常常使用通配符代替一个或多个真正字符。通配符有问号(?)和星号(*)等,其中,“?”可以代替一个字符,而“*”可以代替零个或多个字符。 你的任务是,给出一个带有通配符的字符串和一个不带通配符的字符串,判断他们是否能够匹配。 例如,1?456 可以匹配 12456、13456、1a456,但是却不能够匹配23456、1aa456; 2*77?8可以匹配 24457798、237708、27798。 关于输入
2021-11-28 22:01:44 716
原创 递归——迷宫
描述 在N*N的迷宫内,“#”为墙,“.”为路,“s”为起点,“e”为终点,一共4个方向可以走。从左上角((0,0)“s”)位置处走到右下角((n-1,n-1)“e”)位置处,可以走通则输出YES,不可以走则输出NO。 关于输入 输入的第一行为一个整数m,表示迷宫的数量。 其后每个迷宫数据的第一行为一个整数n(n≤16),表示迷宫的边长,接下来的n行每行n个字符,字符之间没有空格分隔。 关于输出 输出有m行,每行对应的迷宫能走,则输出YES,否则输出NO。 例子输入
2021-11-28 21:26:30 435
原创 递归——大整数加法
描述 计算a+b的值 关于输入 第一行输入测试数据的数目 n 接下来 n 行,每行输入两个非负整数a和b,它们的位数<=200 关于输出 输出数据有 n 行,每行输出一个非负整数,即对应数据 a+b 的值,不允许有前导的“0” 例子输入 11111111111111111111111111111111111122222222222222222222222222222222222 例子输出 333333333333333333
2021-11-28 20:48:01 268
原创 递归——矩阵归零消减序列和
描述 给定一个n*n的矩阵(3<=n<=100,元素的值都是非负整数)。通过n-1次实施下述过程,可把这个矩阵转换成一个1*1的矩阵。每次的过程如下: 首先对矩阵进行归零:即对每一行(或一列)上的所有元素,都在其原来值的基础上减去该行(或列)上的最小值,保证相减后的值仍然是非负整数,且这一行(或列)上至少有一个元素的值为0。 然后对矩阵进行消减:即把n*n矩阵的第二行和第二列删除(如果二维数组为a[][],则删除的是a[1][1]所在的行和列),使之转换为...
2021-11-28 19:29:32 639
原创 递归——左手定则
描述 玩过RPG(尤其是国产RPG)的童鞋都应该对迷宫这种神棍的设定深恶痛绝,尤其是当你转了半小时之后发现回到了原地,这种感觉真是无比的痛苦。。。万一游戏还中途崩溃了那真是连掀桌子、砸键盘、摔鼠标的心都有了…… 经过无数次的TRIAL AND ERROR之后,玩家终于下定决心认定迷宫存在的意义就是延长游戏时间,SO,他决定借鉴著名的左手定则(就是在每一个路口,我们都选择最左边的方向,左转的优先级最高,其次为向前,最后为右转,如果实在走进了一个死胡同,那就连续右转两次,回头向后走。稍微研究一下这种走
2021-11-20 16:29:52 1140
原创 递归——多边形游戏(递归法)
描述 一个多边形,开始有n个顶点。每个顶点被赋予一个正整数值,每条边被赋予一个运算符“+”或“*”。所有边依次用整数从1到n编号。 现在来玩一个游戏,该游戏共有n步: 第1步,选择一条边,将其删除 随后n-1步,每一步都按以下方式操作:(1)选择一条边E以及由E连接着的2个顶点v1和v2; (2)用一个新的顶点取代边E以及由E连接着的2个顶点v1和v2,将顶点v1和v2的整数值通过边E上的运算得到的结果值赋给新顶点。 最后,所有边都被删除,...
2021-11-20 14:57:36 4146
原创 递归——旅行售货商问题
描述 一个国家有 n 个城市,每两个城市之间都开设有航班,从城市 i 到城市 j 的航班价格为 cost[i, j] ,而且往、返航班的价格相同。 售货商要从一个城市出发,途径每个城市 1 次(且每个城市只能经过 1 次),最终返回出发地,而且他的交通工具只有航班,请求出他旅行的最小开销。 关于输入 输入的第 1 行是一个正整数 n (3 <= n <= 15) 然后有 n 行,每行有 n 个正整数,构成一个 n * n 的矩阵,矩阵的第 i 行第 j 列为城市 i 到城
2021-11-19 15:52:10 983
原创 递归——合理消费
描述 计算概论期终考试结束后,同学B感觉自己得到了解脱。回想起复习期间的艰苦岁月,B决定去某新开的食堂大吃一顿。 B同学希望今天把饭卡的钱全部花完,以抚慰自己受伤的心灵。 已知B的饭卡里有钱p元,给定食堂物品的价格列表(价格不重复),请你给出所有可能的恰好把p元花掉的购买选择。 如:p=7, 食堂现有价格为 [3,2,6,7]的物品,则可能的购买选择有: [3, 2, 2] [7] 每种价格的物品可以多次选购。 关于输入 n+1行 第1行有两个整数,..
2021-11-19 15:45:43 1080
原创 递归——凑单
描述 消费者为了享受商家发布的满减优惠,常常需要面临凑单问题。 假设有n件商品,每件的价格分别为p1,p2,...,pn,每件商品最多只能买1件。为了享受优惠,需要凑单价为t。那么我们要找到一种凑单方式,使得凑单价格不小于t(从而享受优惠),同时尽量接近t。被称为“最佳凑单” 如果不存在任何一种凑单方式,使得凑单价格不小于t(即无法享受优惠),那么最佳凑单不存在。 比如当前还差10元享受满减,可选的小件商品有5件,价格分别为3元、5元、8元、8元和9元,每件商品最多只能买1件。那么当前
2021-11-19 09:07:28 1144
原创 递归——分解因数
描述 给出一个正整数a,要求分解成若干个正整数的乘积,即a = a1 * a2 * a3 * ... * an,并且1 < a1 <= a2 <= a3 <= ... <= an,问这样的分解的种数有多少。注意到a = a也是一种分解。 关于输入 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a (1 < a < 32768) 关于输出 n行,每行输出对应一个输入。输出应是一个正整数,指明满足要求的分解的种数
2021-11-19 08:54:28 880
原创 递归——集合里的乘法
描述 给定整数集合S和一个目标数T,判断是否可以从S中挑选一个非空子集,子集中的数相乘的乘积为T。 关于输入 输入为两行。 第一行为目标数T和S中的元素个数N,以空格隔开。 第二行为S中的N个元素,以空格隔开。 其中 N <= 16。 关于输出 如果可以,则输出YES,否则输出NO。 例子输入 Sample Input 1:12 51 2 3 4 5Sample Input 2:33 54 2 8 7 5
2021-11-18 22:45:46 1270
原创 递归——迭代法求平方根
描述 根据级数运算,一个数的平方根能用如下公式表示: sqrt(a) = lim f(n) n->∞ 其中,f(n) 是一个递推函数,其递推式如下:f(n+1)= 0.5*(f(n)+a/f(n)) 显然,迭代的次数越多,求出的值就越精确。 对于一个给定的实数 a,请用上述方法求出它的平方根。 要求前后两次迭代出的 f(n) 的差的绝对值小于等于 1E-5 方可终止 关于输入 一个正实数a 关于输出 一个正实数,它的值是a的平...
2021-11-18 09:48:58 3421 1
原创 递归——2的幂次方表示
描述任何一个正整数都可以用2的幂次方表示。例如:137=27+23+20同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:2(7)+2(3)+2(0)进一步:7=22+2+20(21用2表示)3=2+20所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)又如:1315=210+28+25+2+1所以1315最后可表示为:2(2(2+2(0))+2...
2021-11-18 09:26:50 187
原创 递归回溯——棋盘问题
描述 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 关于输入 输入含有多组测试数据。 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n 当为-1 -1时表示输入结束。 随后的n行描述了棋盘的形状:每行有n个字符,其中
2021-11-17 23:28:16 187
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人