- 博客(38)
- 收藏
- 关注
原创 寻宝
小明有一张藏宝图,上面有m*n个房间,每个房间里面都有一个有一定价值的宝物,小明只能从左上角的房间进入收集宝物,且每次只能向右边或向下边的房间继续寻宝,最终只能从最右下的房间出来。请你帮小明计算下他最多可以收集到多少价值的宝物?输入格式:输入第一行给出两个正整数m,n(1=<m,n<=2000),随后给出m行数据,每行都包括n个正整数,中间用空格分割。输出格式:输出收集到的最大价值v,题目保证v<10^9。输入样例:4 41 18 9 37 10 6 125 13 4 1
2020-12-26 21:07:43
260
原创 矩阵链相乘问题
矩阵的乘法定义如下:设A是m×p的矩阵,B是p×n的矩阵,则A与B的乘积为m×n的矩阵,记作C=AB,其中,矩阵C中的第i行第j列元素cij 可以表示为:cij =Σk=1p aik ×bkj =ai1 b1j +ai2 b2j +⋯+aip bpj .当多个矩阵相乘时,采用不同的计算顺序所需的乘法次数不相同。例如,A是50×10的矩阵,B是10×20的矩阵,C是20×5的矩阵, 计算ABC有
2020-12-26 21:06:59
292
原创 回文串问题
一个字符串,如果从左到右读和从右到左读是完全一样的,比如"aba",我们称其为回文串。现在给你一个字符串,可在任意位置添加字符,求最少添加几个字符,才能使其变成一个回文串。输入格式:任意给定的一个字符串,其长度不超过1000.输出格式:能变成回文串所需添加的最少字符数。输入样例:在这里给出一组输入。例如:Ab3bdAbb输出样例:在这里给出相应的输出。例如:21#include <iostream>#include <stdio.h>#include &
2020-12-26 21:06:12
160
原创 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-26 21:05:29
76
原创 最大子段和
给定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 <iost
2020-12-26 21:04:41
78
原创 工作分配问题
设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。输入格式:输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。输出格式:将计算出的最小总费用输出到屏幕。输入样例:在这里给出一组输入。例如:310 2 32 3 43 4 5输出样例:在这里给出相应的输出。例如:9#include <iostream>using na
2020-12-26 21:03:51
103
原创 666
小明有一张m*n的好习惯记录卡,记录每一天的好习惯目标达成度(数字0-9表示)。某天目标完成达成,就在当天的格子里写上数字6,目标没有完全达成就写上一个小于6的数字(0-5),目标超额完成就写上一个大于6的数字(7-9)。记录卡上如果能找到一条长度为3的路径并且路径上的三个数字都大于等于6(这里的路径是指从某个格子出发,可以向左、右、上、下格子移动,并且不能重复经过一个格子),则小明就能得到一个“666”奖励。请你帮小明统计下他总共能得到多少“666”奖励。输入格式:输入第一行给出两个正整数m,n(1
2020-12-26 21:03:07
112
原创 整数拆分
将一个正整数拆分成若干个正整数的和。输入格式:一个正整数n输出格式:若干行,每行一个等式(每个数或者等号间都有一个空格,第一个数前没有空格,最后一个数后面没有空格,数与数之间要求非降序排列)。最后一行给出解的总个数输入样例:在这里给出一组输入。例如:4输出样例:在这里给出相应的输出。例如:4 = 1 + 1 + 1 + 14 = 1 + 1 + 24 = 1 + 34 = 2 + 24#include <iostream>using namespace std;
2020-12-26 21:02:18
309
原创 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-26 21:01:21
60
原创 八皇后问题
2 八皇后问题在国际象棋中,皇后是最厉害的棋子,可以横走、直走,还可以斜走。棋手马克斯·贝瑟尔 1848 年提出著名的八皇后问题:即在 8 × 8 的棋盘上摆放八个皇后,使其不能互相攻击 —— 即任意两个皇后都不能处于同一行、同一列或同一条斜线上。例如:题图.jpg现在我们把棋盘扩展到 n×n 的棋盘上摆放 n 个皇后,请问该怎么摆?请编写程序,输入正整数 n,输出全部摆法(棋盘格子空白处显示句点“.”,皇后处显示字母“Q”,每两个字符之间空一格)。输入格式正整数 n(n>0)输出格式
2020-12-26 21:00:17
139
原创 最佳调度问题
假设有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-24 13:27:02
772
原创 活动选择问题
假定一个有n个活动(activity)的集合S={a1 ,a2 ,…,an },这些活动使用同一个资源(例如同一个阶梯教室),而这个资源在某个时刻只能供一个活动使用。每个活动ai 都有一个开始时间si 和一个结束时间fi ,其中0<=si <fi <=32767。如果被选中,任务ai 发生在半开时间区间[si ,fi )期间。如果两个活动ai 和aj 满足[s
2020-12-24 13:26:15
280
原创 喷水装置
长L米,宽W米的草坪里装有n个浇灌喷头。每个喷头都装在草坪中心线上(离两边各W/2米)。我们知道每个喷头的位置(离草坪中心线左端的距离),以及它能覆盖到的浇灌范围。请问:如果要同时浇灌整块草坪,最少需要打开多少个喷头?输入格式:输入包含若干组测试数据。第一行一个整数T表示数据组数。每组数据的第一行是整数n、L和W的值,其中n≤10 000。接下来的n行,每行包含两个整数,给出一个喷头的位置和浇灌半径。如图1所示的示意图是样例输入的第一组数据所描述的情况。ttt.jpg图1输出格式:对每
2020-12-24 13:25:32
463
原创 看电影
终于到周末了,明明是特别喜欢看电影。他想在一天内尽量多的看到完整的多部电影。 现在他把他喜欢的电影的播放时间表给你,希望你能帮他合理安排。输入格式:输入包含多组测试数据。每组输入的第一行是一个整数n(n<=100),表示明明喜欢的电影的总数。 接下来n行,每行输入两个整数si和ei(1<=i<=n),表示第i个电影的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。 当n=0时,输入结束。输出格式:对于每组输入,输出能完整看到的电影的个数。输入样例:在这里给出一组输入。
2020-12-24 13:24:39
200
原创 最优合并问题
题目来源:王晓东《算法设计与分析》给定k 个排好序的序列, 用 2 路合并算法将这k 个序列合并成一个序列。 假设所采用的 2 路合并算法合并 2 个长度分别为m和n的序列需要m+n-1 次比较。试设 计一个算法确定合并这个序列的最优合并顺序,使所需的总比较次数最少。 为了进行比较,还需要确定合并这个序列的最差合并顺序,使所需的总比较次数最多。输入格式:第一行有 1 个正整数k,表示有 k个待合并序列。 第二行有 k个正整数,表示 k个待合并序列的长度。输出格式:输出最多比较次数和最少比较次数。
2020-12-24 13:23:55
354
原创 月饼
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10 万吨,总售价分别为 75、72、45 亿元。如果市场的最大需求量只有 20 万吨,那么我们最大收益策略应该是卖出全部 15 万吨第 2 种月饼、以及 5 万吨第 3 种月饼,获得 72 + 45/2 = 94.5(亿元)。输入格式
2020-12-24 13:23:07
172
原创 装箱问题
假设有N项物品,大小分别为s1 、s2 、…、si 、…、sN ,其中si 为满足1≤si ≤100的整数。要把这些物品装入到容量为100的一批箱子(序号1-N)中。装箱方法是:对每项物品, 顺序扫描箱子,把该物品放入足以能够容下它的第一个箱子中。请写一个程序模拟这种装箱过程,并输出每个物品所在的箱子序号,以及放置全部物品所需的箱子数目。输入格式:输入第一行给出物品个数N(≤1000);第二行给出N个正整数si (1≤si ≤100,表
2020-12-24 13:22:19
92
原创 棋盘覆盖
在一个2^k * 2k(k为正整数,k<=10,length=2k)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格(其坐标为aa,bb,分别代表行坐标号和列坐标号),以及有四种L型骨牌(如下图)。求用若干块这种L型骨牌实现除该特殊点棋盘的全覆盖。(本题要求采用分治算法做)输入格式:输入三个数,分别是aa,bb,length.输出格式:输出整个棋盘。其中特殊方格填为0,然后铺棋盘的顺序为:先铺四个子棋盘交界的部分,然后递归的对每个子棋盘按照左上,右上,右下,左下的顺时针顺
2020-12-24 13:21:09
314
原创 分形的递归输出
分形,具有以非整数维形式充填空间的形态特征。通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。一个盒状分形定义如下: 度为1的盒分形为:X度为2的盒分形为:X XXX X依次类推,如果B(n-1)表示n-1度的盒分形,则n度的盒分形递归定义如下:B(n - 1) B(n - 1) B(n - 1)B(n - 1) B(n - 1)请画出度为n的盒分形的图形输入格式:输入一
2020-12-24 13:19:28
285
原创 改写二分搜索算法
题目来源:《计算机算法设计与分析》,王晓东设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。输入格式:输入有两行:第一行是n值和x值; 第二行是n个不相同的整数组成的非降序序列,每个整数之间以空格分隔。输出格式:输出小于x的最大元素的最大下标i和大于x的最小元素的最小下标j。当搜索元素在数组中时,i和j相同。 提示:若x小于全部数值,则输出:-1 0 若x大于全
2020-12-24 13:15:20
462
原创 二分查找
输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。输入格式:输入共三行: 第一行是n值; 第二行是n个整数; 第三行是x值。输出格式:输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。输入样例:41 2 3 41输出样例:02代码示例#include<iostream>using namespace std;#d
2020-12-22 21:33:19
330
原创 递归实现逆序输出整数
本题目要求读入1个正整数n,然后编写递归函数reverse(int n)实现将该正整数逆序输出。输入格式:输入在一行中给出1个正整数n。输出格式:对每一组输入,在一行中输出n的逆序数。输入样例:12345输出样例:54321代码示例#include<iostream>using namespace std;void reverse(int num){ if (num > 0) { cout << (num % 10); reverse(n
2020-12-22 21:32:30
817
1
原创 换硬币
将一笔零钱换成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:1, f
2020-12-22 21:31:17
61
原创 梅森数
形如2n−1的素数称为梅森数(Mersenne Number)。例如22−1=3、23 −1=7都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了231−1=2147483647是一个素数,堪称当时世界上“已知最大素数”的一个记录。本题要求编写程序,对任一正整数n(n<20),输出所有不超过2n −1的梅森数。输入格式:输入在一行中给出正整数n(n<20)。输出格式:按从小到大的顺序输出所有不超过2n−1的梅森数,每行一个。如果完全没有,则输出“None”。
2020-12-22 21:30:21
479
原创 输出全排列
输入整数n(3<=n<=7),编写程序输出1,2,…,n整数的全排列,按字典序输出。输入格式:一行输入正整数n。输出格式:按字典序输出1到n的全排列。每种排列占一行,数字间无空格。输入样例:在这里给出一组输入。例如:3输出样例:在这里给出相应的输出。例如:123132213231312321代码示例#include<iostream>#include <algorithm>using namespace std;#define NU
2020-12-22 21:28:35
129
原创 百鸡问题扩展-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<iostream>
2020-12-22 21:27:43
131
原创 穷举问题-搬砖
某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。如果想用n人正好搬n块砖,问有多少种搬法?输入格式:输入在一行中给出一个正整数n。输出格式:输出在每一行显示一种方案,按照"men = cnt_m, women = cnt_w, child = cnt_c"的格式,输出男人的数量cnt_m,女人的数量cnt_w,小孩的数量cnt_c。请注意,等号的两侧各有一个空格,逗号的后面也有一个空格。如果找不到符合条件的方案,则输出"None"输入样例:45输出样例:men =
2020-12-22 21:26:44
329
原创 求前缀表达式的值
算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4。请设计程序计算前缀表达式的结果值。输入格式:输入在一行内给出不超过30个字符的前缀表达式,只包含+、-、*、/以及运算数,不同对象(运算数、运算符号)之间以空格分隔。输出格式:输出前缀表达式的运算结果,保留小数点后1位,或错误信息ERROR。输入样例:+ + 2 * 3 - 7 4 / 8 4输出样例:13.
2020-12-22 21:25:28
229
1
原创 排序
给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果。本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:数据1:只有1个元素;数据2:11个不相同的整数,测试基本正确性;数据3:103个随机整数;数据4:104个随机整数;数据5:105个随机整数;数据6:105个顺序整数;数据7:105个逆序整数;数据8:105个基本有序的整数;数据9:105个随机正整数,每个数字不超过1000。输入格式:输入第一行给出正整数N(≤105 ),随后一行给出
2020-12-22 21:24:05
47
原创 跳一跳
微信小程序中的跳一跳相信大家都玩过。emmm???只学习不玩游戏?那就吃亏了…好好读题理解吧。 简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。 如果跳到了方块上,但没有跳到方块的中心则获得1分;跳到方块中心时,若上一次的得分为1分或这是本局游戏的第一次跳跃则此次得分为2分,否则此次得分比上一次得分多两分(即连续跳到方块中心时,总得分将+2,+4,+6,+8…)。 现在给出一个人跳一跳的全过程,请你求出他本局游戏的得分(按照题目描述的规则)。
2020-12-22 21:22:54
76
转载 C++ 中的sort()排序函数用法(转载)
sort(first_pointer,first_pointer+n,cmp)该函数可以给数组,或者链表list、向量排序。实现原理:sort并不是简单的快速排序,它对普通的快速排序进行了优化,此外,它还结合了插入排序和推排序。系统会根据你的数据形式和数据量自动选择合适的排序方法,这并不是说它每次排序只选择一种方法,它是在一次完整排序中不同的情况选用不同方法,比如给一个数据量较大的数组排序,开始采用快速排序,分段递归,分段之后每一段的数据量达到一个较小值后它就不继续往下递归,而是选择插入排序,如果递归的
2020-12-22 21:19:52
339
原创 利用STL比较数据大小并排序
题目要求本题目要求读入n个整数(输入数字个数根据输入时随机确定,以输入一个非数字的值作为输入结束标志),利用STL比较数据大小并排序(由小到大升序),然后输出排序后的数据。输入格式:输入在一行中依次输入整数值,每个数字之间用空格分隔,输入数字个数根据输入时随机确定,以输入一个非数字的值作为输入结束标志。输出格式:先输出一段提示“从标准设备读入数据,直到输入是非整型数据为止”,在输入一组数字后,输出排序后的数字,在一行中由小到大依次输出所有值,数字之间用空格分隔。输入样例:10 3 -2 8 2
2020-11-11 16:50:51
1221
原创 办事大厅排队算法
做题过程中发现了一些小细节,来给大家分享一下。1.函数说明list:队列类,类似于vector,允许快速的插入和删除,但是随机访问却比较慢。常用的函数有:back() 返回最后一个元素begin() 返回指向第一个元素的迭代器clear() 删除所有元素empty() 如果list是空的则返回trueend() 返回末尾的迭代器erase() 删除一个元素front() 返回第一个元素pop_back() 删除最后一个元素pop_front() 删除第一个元素push_back()
2020-11-10 18:04:25
1158
原创 jsp统计网站访问量
利用<%!><%>来定义jsp页面的成员变量和成员方法这样就会被所有访问的顾客共享利用这个可以制作一个统计访问量的程序<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><titl
2020-11-08 18:05:06
679
原创 JSP forward动作标记学习
书上的一个forward动作标记的例子,通过合适的时机来执行forward动作同时用了一个setAttribute和getAttribute来来传递i的值给奇数页或者偶数页这里是example.jsp的代码<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ page import="java.util.Random"%><!DOCTYPE h
2020-11-08 17:40:27
759
原创 [笔记][C语言]二级指针
二级指针我们先定义一个二级指针int a=1911;int* p1=&a;int** p2=&p1;可以看到二级指针在初始化时也和一级指针p1别无二致,都是系统给指针分配一个内存地址,然后将指向变量的地址赋给指针(将变量的地址存放到本身的内存空间里)在此,我们可以知道&p2=0X4040//p2指针所在的地址p2=0X3030//p2存放的值,也是p2所指向的地址,也就是p1的地址*p2=0X2020//p2所指向的地址所存放的值,也就是p1的值**p2=191
2020-09-22 11:02:22
94
原创 我的第一篇博,对于C指针的理解
[初试水]我的第一篇博(个人笔记),对于C指针的理解C的定义让我们来看看C里对指针的定义指针是一种编程语言对象,它存储位于计算机内存中的另一个值的内存地址。指针引用内存中的一个位置,获得存储在该位置的值称为指针解引用。作为类比,一本书索引中的页码可以被认为是指向相应页面的指针;通过翻转到具有给定页码的页面并读取在该页面上找到的文本,可以取消这种指针的引用。指针变量的实际格式和内容取决于底层计算机体系结构。接着我们来看看定义一个指针时和定义一个变量有什么不同:int a=1911;系统给我们
2020-09-21 20:22:57
75
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人