
王道计算机机试
胖胖胖煜
小红shu:胖胖胖煜
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
王道计算机机试练习——01背包
#include<stdio.h>#define INF 0x7fffffffint max(int a, int b) { return a > b ? a : b; }struct E { int w;//物品的体积 int v;//物品的价值}list[101];int dp[101][1001];int main() { int s, n; while (scanf("%d%d", &s, &n) != EOF) { for (int i =原创 2020-07-31 10:35:23 · 168 阅读 · 0 评论 -
王道计算机机试练习——动态规划完全背包存储罐
王道计算机机试练习——动态规划完全背包存储罐题目描述有一个储蓄罐,告知其空时的重量和当前重量,并给定一些钱币 的价值和相应的重量,求储蓄罐中最少有多少现金。 由于每个钱币的数量都可以有任意多,所以该问题为完全背包问题。但是在该例中,完全背包有两处变化,首先,要求的不再是最大值,而变为了最小值, 这就要求我们在状态转移时,在 dp[j]和 dp[j-list[i].w]+list[i].v 中选择较小的转移 值;其次,该问题要求钱币和空储蓄罐的重量恰好达到总重量,即在背包问题中 表现为背包恰好装满,在前原创 2020-07-31 10:33:46 · 255 阅读 · 0 评论 -
王道计算机机试——求解最长公共子串长度
王道计算机机试——求解最长公共子串长度题目描述最朴素的求解两字符串的最长公共子串长度。样例输入:abcdcxbydz样例输出:2代码#include<stdio.h>#include<string.h>int dp[101][101];int max(int a, int b) { return a > b ? a : b; }int main() { char S1[101], S2[101]; while (scanf("%s%s", S1,原创 2020-07-29 17:29:10 · 158 阅读 · 0 评论 -
王道机试练习——最长递增/递减子序列
王道机试练习——最长递增/递减子序列题目描述某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦 截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发 炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导 弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必 须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导 弹 。输入: 每组输入有两行, 第一行,输入雷达捕捉到的敌国导弹的数量 k(k<=25), 第二行,输入原创 2020-07-29 10:48:15 · 163 阅读 · 0 评论 -
王道计算机机试——不容易系列错误排列方法
王道计算机机试——不容易系列错误排列方法题目描述有个网名叫做 8006 的男性同学,结交网友无数,最近该 同学玩起了浪漫,同时给 n 个网友每人写了一封信,这都没什么,要命的是,他 竟然把所有的信都装错了信封!注意了,是全部装错哟!现在的问题是:请大家 帮可怜的 8006 同学计算一下,一共有多少种可能的错误方式呢?输入: 输入数据包含多个多个测试实例,每个测试实例占用一行,每行包含一个正 整数 n(1<n<=20),n 表示 8006 的网友的人数。输出: 对于每行输入请输出可能的错误原创 2020-07-29 10:13:03 · 235 阅读 · 0 评论 -
王道计算机机试——N阶楼梯上楼问题
王道计算机机试——N阶楼梯上楼问题题目描述:N 阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求 采用非递归) 输入: 输入包括一个整数 N,(1<=N<90)。 输出: 可能有多组测试数据,对于每组数据,输出当楼梯阶数是 N 时的上楼方式 个数。样例输入:4样例输出:5代码#include<stdio.h>long long F[91];int main() { F[1] = 1; F[2] = 2; for (int i = 3; i &原创 2020-07-28 11:06:42 · 346 阅读 · 0 评论 -
王道机试练习——深度优先走迷宫
王道机试练习——深度优先走迷宫题目描述有一个 N*M 的迷宫,包括起点 S,终点 D,墙 X,和地面, 0 秒时主人公从 S 出发,每秒能走到四个与其相邻的位置中的一个,且每个位置被 行走之后都不能再次走入,问是否存在这样一条路径使主人公在 T 秒时刚好走 到 D。样例输入:445S.X.…X.…XD…345S.X.…X.…D000 样例输出:NOYES代码#include<stdio.h>char maze[8][8];int n, m, t;bool原创 2020-07-28 10:47:53 · 191 阅读 · 0 评论 -
王道机试练习——素数环
王道机试练习——素数环题目描述由给定的 1 到 n 数字中,将数字依次填入环中,使得环中任意两 个相邻的数字间的和为素数。对于给定的 n,按字典序由小到大输出所有符合条 件的解(第一个数恒定为 1)。这就是有名的素数环问题。 为了解决该问题,我们可以采用回溯法枚举每一个值。当第一个数位为 1 确定时,我们尝试放入第二个数,使其和 1 的和为素数,放入后再尝试放入第三 个数,使其与第二个数的和为素数,直到所有的数全部被放入环中,且最后一个 数与 1 的和也是素数,那么这个方案即为答案,输出;若在尝试放数的原创 2020-07-20 10:34:42 · 216 阅读 · 0 评论 -
王道机试练习——汉诺塔
王道机试练习——汉诺塔题目描述约 19 世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆, 最左边的杆上自上而下、由小到大顺序串着由 64 个圆盘构成的塔。目的是将最 左边杆上的盘全部移到右边的杆上,条件是一次只能移动一个盘,且不允许大盘 放在小盘的上面。现在我们改变游戏的玩法,不允许直接从最左 (右)边移到最右 (左)边(每 次 移 动 一 定 是 移 到 中间 杆 或 从 中 间 移 出), 也 不 允 许 大 盘 放 到 下 盘 的 上 面。Daisy 已经做过原来的汉诺塔问题和汉诺塔原创 2020-07-20 09:49:01 · 185 阅读 · 0 评论 -
王道机试练习——胜利大逃亡之广度优先搜索
王道机试练习——胜利大逃亡之广度优先搜索题目描述Ignatius 被魔王抓走了 ,有一天魔王出差去了 ,这可是 Ignatius 逃亡的好机会 . 魔王住在一个城堡里 ,城堡是一个 ABC 的立方体 ,可以被表示成 A 个 B*C 的矩 阵,刚开始 Ignatius 被关在 (0,0,0)的位置 ,离开城堡的门在 (A-1,B-1,C-1)的位置 ,现 在知道魔王将在 T 分钟后回到城堡 ,Ignatius 每分钟能从一个坐标走到相邻的六个 坐标中的其中一个 .现在给你城堡的地图 ,请你计算出 Igna原创 2020-07-19 10:12:48 · 289 阅读 · 0 评论 -
王道机试练习——最短路径最短花费
王道机试练习——最短路径最短花费题目描述给你 n 个点, m 条无向边,每条边都有长度 d 和花费 p,给你起点 s 终点 t, 要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花 费最少的。输入: 输入 n,m,点的编号是 1~n,然后是 m 行,每行 4 个数 a,b,d,p,表示 a 和 b 之间有一条边,且其长度为 d,花费为 p。最后一行是两个数 s,t;起点 s,终点 t。 n 和 m 为 0 时输入结束。 (1<n<=1000, 0<m<100原创 2020-07-18 16:19:53 · 189 阅读 · 0 评论 -
王道机试练习——求最短距离Dijkstra算法
王道机试练习——求最短距离Dijkstra算法题目描述在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的 t-shirt。但是 每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累 的 ! 所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?输入:输入包括多组数据。每组数据第一行是两个整数 N、M (N<=100,M<=10000), N 表示成都的大街上有几个路口,标号为 1 的路口是商店所在地,标号为 N 的 路口是赛场所在地, M 则表示在成都有几条路原创 2020-07-18 15:14:30 · 250 阅读 · 0 评论 -
王道计算机机试——Floyd算法最短路径
王道计算机机试——Floyd算法最短路径题目描述在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的 t-shirt。但是 每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累 的 ! 所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?输入:输入包括多组数据。每组数据第一行是两个整数 N、M (N<=100,M<=10000), N 表示成都的大街上有几个路口,标号为 1 的路口是商店所在地,标号为 N 的 路口是赛场所在地, M 则表示在成都有几条路。 N=原创 2020-07-16 09:56:19 · 238 阅读 · 0 评论 -
王道机试练习——连接坐标点找最短距离
王道机试练习——连接坐标点找最短距离题目描述为平面上有若干个点,我们需要用一些线段来将这些点连接起来使 任意两个点能够通过一系列的线段相连,给出所有点的坐标,求一种连接方式使 所有线段的长度和最小,求该长度和。 若我们将平面上的点抽象成图上的结点,将结点间直接相邻的线段抽象成连 接结点的边,且权值为其长度,那么该类似于几何最优值的问题就被我们转化到 了图论上的最小生成树问题。但在开始求最小生成树前,我们必须先建立该图, 得出所有的边和相应的权值。代码#include<stdio.h>#原创 2020-07-14 16:42:39 · 819 阅读 · 0 评论 -
王道机试练习——找朋友之求最大集合
王道机试练习——找朋友之求最大集合题目描述有 10000000 个小朋友,他们之中有 N 对好朋友,且朋友关系具 有传递性:若 A 与 B 是朋友, B 与 C 是朋友,那么我们也认为 A 与 C 是朋友。 在给出这 N 对朋友关系后,要求我们找出一个最大(人数最多)的集合,该集 合中任意两人之间都是朋友或者该集合中只有一个人,输出该最大人数。 如前例所示,我们利用并查集相关操作已经可以求得有几个这样符合条件的 集合,但是计算集合中的元素个数我们仍没有涉及。我们如果能够成功求得每个 集合的元素个数,我们原创 2020-07-14 15:42:32 · 449 阅读 · 0 评论 -
王道机试练习——畅通道路之最小生成树
王道机试练习——畅通道路之最小生成树题目描述某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政 府―畅通工程的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有 直接的公路相连,只要间接通过公路可达即可),并要求铺设的公路总长度为最 小。请计算最小的公路总长度。输入: 测试输入包含若干测试用例。每个测试用例的第 1 行给出村庄数目 N ( < 100 );随后的 N(N-1)/2 行对应村庄间的距离,每行给出一对正整数,分别是两 个村庄的编号,以及此两村庄间的距离。为简单起原创 2020-07-14 15:39:58 · 161 阅读 · 0 评论 -
王道机试练习——畅通工程
王道机试练习——畅通工程题目描述:某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府 ―畅通工程 ‖的目标是使全省任何两个城镇间都可以实现交 通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还 需要建设多少条道路?输入: 测试输入包含若干测试用例。每个测试用例的第 1 行给出两个正整数,分别 是城镇数目 N ( < 1000 )和道路数目 M;随后的 M 行对应 M 条道路,每行给出 一对正整数,分别是该条道路直接连通的两个城镇的编号。为简原创 2020-07-14 10:51:37 · 131 阅读 · 0 评论 -
王道计算机机试练习——高精度大整数随意进制换算
高精度大整数随意进制换算题目描述将 M 进制的数 X 转换为 N 进制的数输出。输入: 输入的第一行包括两个整数: M 和 N(2<=M,N<=36) 。 下面的一行输入一个数 X,X 是 M 进制的数,现在要求你将 M 进制的数 X 转换成 N 进制的数输出。输出: 输出 X 的 N 进制表示的数。题目思路该题初看起来很像一般的进制转换,但提示中明确告知,输入会有较大的数 据,即我们为了完成本例需要的进制转换,需要使用高精度整数。同时,考虑到 进制转换的内容,我们的高精度整数需要进原创 2020-07-09 16:04:30 · 267 阅读 · 0 评论 -
王道机试练习——高精度N的阶乘
王道练习——高精度N的阶乘题目描述输入一个正整数 N,输出 N 的阶乘。输入: 正整数 N(0<=N<=1000)输出: 输入可能包括多组数据,对于每一组输入数据,输出 N 的阶乘题目思考本例中,虽然输入的数据并不大,但是计算的结果却可能非常的大( 1000!), 所以我们依旧需要利用高精度整数来完成计算。本例中涉及的高精度运算即是高 精度乘法。代码#include<iostream>#include<stdio.h>#include<strin原创 2020-07-09 07:52:41 · 328 阅读 · 0 评论 -
王道机试练习——高精度大整数加法
高精度大整数加法题目描述实现一个加法器,使其能够输出 a+b 的值。输入: 输入包括两个数 a 和 b,其中 a 和 b 的位数不超过 1000 位。输出: 可能有多组测试数据,对于每组数据,输出 a+b 的值。代码#include<iostream>#include<string>struct bigInteger {//高精度整数结构体 int digit[1000];//按四位数一个单位保存 int size;//下一个未使用的数组单元 void ini原创 2020-07-06 16:47:28 · 236 阅读 · 0 评论 -
# 王道机试练习——巧妙求A^B(A的B次幂)二分求幂法
王道机试练习——巧妙求A^B(A的B次幂)二分求幂法题目描述求 A^B 的最后三位数表示的整数。说明: A^B 的含义是 ―A的 B 次方输入: 输入数据包含多个测试实例,每个实例占一行,由两个正整数 A 和 B 组成 (1<=A,B<=10000),如果 A=0, B=0,则表示输入数据的结束,不做处理。输出: 对于每个测试实例,请输出 A^B 的最后三位表示的整数,每个输出...原创 2020-04-06 11:41:35 · 572 阅读 · 0 评论 -
王道机试练习——分解素因数
王道机试练习——分解素因数题目描述求正整数 N(N>1)的质因数的个数。 相同的质因数需要重复计算。如 120=22235 ,共有 5 个质因数。 输入: 可能有多组测试数据,每组测试数据的输入是一个正整数 N,(1<N<10^9)。输出: 对于每组数据,输出 N 的质因数的个数。样例输入:120样例输出:5步骤以及原理该代码按照如下步骤对输入的整数分解素因数:...原创 2020-04-05 11:47:55 · 592 阅读 · 0 评论 -
王道计算机机试——巧妙求素数 素数筛法
王道计算机机试——巧妙求素数 素数筛法题目描述:输入一个整数 n(2<=n<=10000),要求输出所有从 1 到这个整数之间 (不包括 1 和这个整数 )个位为 1 的素数,如果没有则输出 -1。输入: 输入有多组数据。 每组一行,输入 n。输出: 输出所有从 1 到这个整数之间 (不包括 1 和这个整数 )个位为 1 的素数 (素数之 间用空格隔开,最后一个素数后面没有空格...原创 2020-04-04 10:38:07 · 471 阅读 · 0 评论 -
王道机试练习——求素数
王道机试练习——求素数题目描述题目描述: 给定一个数 n,要求判断其是否为素数( 0,1,负数都是非素数)。输入: 测试数据有多组,每组输入一个数 n。输出: 对于每组输入 ,若是素数则输出 yes,否则输入 no。样例输入:13样例输出:yes求解素数思路怎样确定一个数是素数?我们可以用所有大于 1 小于其本身的整数去试着 整除该数,若在该区间内存在某个数能整除该数则该数不是...原创 2020-04-01 11:19:25 · 198 阅读 · 0 评论 -
王道机试练习——最小公倍数
王道机试练习——最小公倍数题目描述给定两个正整数,计算这两个数的最小公倍数。输入: 输入包含多组测试数据,每组只有一行,包括两个不大于 1000 的正整数。输出: 对于每个测试用例,给出这两个数的最小公倍数,每个实例输出一行。样例输入:10 14样例输出:70题目思路求最小公倍数与求最大公约数有着一定的联系。首先,我们确定什么叫作最小公倍数。求 a、b 的最小公倍数,即求最小...原创 2020-04-01 11:06:20 · 307 阅读 · 0 评论 -
欧几里得最大公约数——递归与非递归
欧几里得算法求最大公约数——递归与非递归题目描述输入两个正整数,求其最大公约数。输入: 测试数据有多组,每组输入两个正整数。输出: 对于每组输入 ,请输出其最大公约数。样例输入:49 14样例输出:7题目算法解释我们把求 a、b 的最大公约数转换成了求 b、a mod b 的最大公约数, 那么问题不变而数据规模则明显变小,我们可以不断重复该过程,直到问题缩小 成求某个非零数与零...原创 2020-03-30 12:15:14 · 619 阅读 · 0 评论 -
王道计算机机试——进制换算
#include<iostream>using namespace std;int main() { long long a, b;//使用数据类型long long确保不会溢出 int m; while (cin >> m) { if (m == 0) break; cin >> a >> b; a = a + b;//计算a...原创 2020-03-29 09:40:19 · 182 阅读 · 0 评论 -
王道计算机机试——任意不同进制转换
王道计算机机试——任意不同进制转换题目描述求任意两个不同进制非负整数的转换( 2 进制~ 16 进制),所给整数在 long 所能表达的范围之内。不同进制的表示符号为( 0,1,…,9,a,b,…,f)或 者(0,1,…,9,A,B,…,F)。输入: 输入只有一行,包含三个整数 a,n,b。a 表示其后的 n 是 a 进制整数, b 表示欲将 a 进制整数 n 转换成 b 进制整数。 a,b...原创 2020-03-29 09:37:55 · 313 阅读 · 0 评论 -
王道计算机机试——数位拆解、特殊乘法
王道计算机机试——数位拆解、特殊乘法一、题目描述写个算法,对 2 个小于 1000000000 的输入,求结果。 特殊乘法举例: 123 * 45 = 14 +15 +24 +25 +34+35输入:两个小于 1000000000 的数输出:输入可能有多组数据,对于每一组数据,输出 Input 中的两个数按照题目 要求的方法进行运算后得到的结果。二、代码第一种方法#include...原创 2020-03-27 21:52:58 · 205 阅读 · 0 评论 -
王道计算机机试——建立二叉排序树
王道计算机机试——建立二叉排序树1.题目描述输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。输入:输入第一行包括一个整数 n(1<=n<=100)。接下来的一行包括 n 个整数。输出:可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树, 并对二叉排序树进行前序、中序和后序遍历。每种遍历结果输出一行。2.思路讲解二叉排序树是一棵特殊的二叉树,它是一...原创 2020-03-14 13:07:41 · 1107 阅读 · 0 评论 -
王道计算机机试——二叉树的还原
王道计算机机试——二叉树的还原1.题目描述给定一棵二叉树的前序遍历和中序遍历,求其后序遍历。(给定前序遍 历与中序遍历能够唯一确定后序遍历)输入:两个字符串,其长度 n 均小于等于 26。 第一行为前序遍历,第二行为中序遍历。二叉树中的结点名称以大写字母表 示:A,B,C…最多 26 个结点。输出:输入样例可能有多组,对于每组测试样例,输出一行,为后序遍历的字符串。2.思路讲解该例...原创 2020-03-09 12:09:51 · 548 阅读 · 0 评论 -
王道计算机机试练习——哈夫曼树
王道计算机机试——哈夫曼树题目描述哈夫曼树,第一行输入一个数 n,表示叶结点的个数。需要用这些叶结点生 成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即 weight,题目需要输出 所有结点的值与权值的乘积之和。1. 哈夫曼树求法1)将所有结点放入集合 K。2)若集合 K 中剩余结点大于 2 个,则取出其中权值最小的两个结点, 构造他 们同时为某个新节点的左右儿子,该新节点是他们共同的...原创 2020-03-09 11:04:02 · 635 阅读 · 0 评论