
王道机试
本专栏分章节记录王道机试指南(第2版)的题目思路和解题代码。
迷麟Milin
There isn't time, so brief is life, for bickerings, apologies, heartburnings, callings to account. There is only time for loving, and but an instant, so to speak, for that. The good life is built with good relationships.
——Mark Twain
展开
-
王道机试 第9章 深度优先搜索 DFS
王道机试 第9章 搜索深度优先搜索 DFS深度优先搜索模板void dfs(int cur){ if (cur == n && 其他到达终点的条件) { 输出答案; } if (剪枝) return; else for (int i = 0; i < n; i++) //遍历n种情况 { if (其他可达条件 && !vis[i...原创 2020-05-06 00:06:41 · 334 阅读 · 0 评论 -
王道机试 第9章 广度优先搜索 BFS
王道机试 第9章 搜索广度优先搜索 BFS(1)状态——确定求解问题的状态,通过状态扩展,遍历所有状态,从中寻找需要的答案。(2)状态扩展方式——尽可能地扩展状态,并对先扩展得到的状态先进性下一次状态扩展。(3)有效状态——对于有些状态,并不需要再次扩展它,而是直接舍弃它。因为根据问题的分析可知,目标状态不可能有这些状态经过若干次状态得到,所以直接舍弃。(4)队列——为了使得先得出的状...原创 2020-05-04 23:55:03 · 444 阅读 · 0 评论 -
C++ getline 读取一行字符(包含空格)
getline函数读取一行字符(字符串间有空格,不能直接cin >> string)使用 getline(cin, str)其中,str为std::string类型,可包含空格例题 密码翻译密码翻译-牛客网题目网址题目描述在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们...原创 2020-04-07 23:53:00 · 4334 阅读 · 0 评论 -
王道机试 第四章 字符串 4.2 字符串处理
王道机试 第四章 字符串 4.2 字符串处理例题4.1 特殊乘法(清华大学复试上机题)解题思路:本题数据范围大于10910^9109,可用string类型接收较大的整形数。int类型只能表示到10910^9109,而long long 可以表示到101810^{18}1018所以一般当两个数据范围都为111~10910^9109的数相加时,其和sum要定义为long long类型,防...原创 2020-03-31 22:31:23 · 273 阅读 · 0 评论 -
王道机试 第十二章 动态规划 12.5 背包问题(0-1背包,完全背包,多重背包)
王道机试 第十二章 动态规划 12.5 背包问题1、0-1背包例题12.7 点菜问题(北京大学复试上机题)注意事项背包数组的范围——和容量C相关,定义maxm=C+5内层循环倒序原因:0-1背包问题的原始DP方程为dp[i][j]=max(dp[i−1][j],dp[i−1][j−w[i]+v[i]])dp[i][j] = max(dp[i - 1][j], dp[i - 1][j...原创 2020-03-08 12:06:29 · 243 阅读 · 0 评论 -
01背包的内循环逆序解析
背包九讲:01背包的内循环逆序问题 对于01背包,用二维数组做DP的情况如下:F[i,v]代表,在背包容量为v的情况下,从前i件物品中选出若干件(因背包容量的限制,可能不会所有i件都在里面,取最大值时背包里应该是权值相对较大的那些物品)所能得到的最大价值。第一句对dp...转载 2020-03-08 11:43:14 · 369 阅读 · 0 评论 -
王道机试 第十二章 动态规划 12.3 最长递增子序列(LIS) 12.4 最长公共子序列(LCS)
王道机试 第十二章 动态规划 12.3最长递增子序列(LIS)12.3 最长递增子序列(LIS)例题12.3 拦截导弹(北京大学复试上机题)动态规划解读设变量设dp[k]dp[k]dp[k]表示以aka_kak为结尾的子序列(可以不连续)的最大程度。(求什么设什么)递推方程对于每个iii (1≤i≤n1 \leq i \leq n1≤i≤n),考察其前方的导弹jjj(j≤ij \...原创 2020-03-06 20:23:15 · 205 阅读 · 0 评论 -
王道机试 第十二章 动态规划 12.2 最大连续子序列和
王道机试 第十二章 动态规划 12.2最大连续子序列和12.2 最大连续子序列和最大序列和(清华大学复试上机题)动态规划思路(1)第一步设变量,求什么设什么。题目希望求出以元素aja_{j}aj结尾的连续子序列{a1,a2,…,aja_1, a_2, \dots, a_ja1,a2,…,aj},使得这个连续子序列的和最大。则令dp[i]dp[i]dp[i](i≥1i \...原创 2020-03-05 17:36:17 · 201 阅读 · 0 评论 -
王道机试 第十二章 动态规划 12.1递推求解
王道机试 第十二章 动态规划 12.1递推求解12.1 递推求解例题12.1 N阶楼梯上楼问题(华中科技大学复试上机题)动态规划思路(1)第一步设变量,求什么设什么。题目希望求出到达NNN阶台阶的方案书,则令dp[i]表示到达第i阶台阶的所有方案数。(2)第二步推导递推方程。考察数列an(n≥1){a}_n(n \geq 1)an(n≥1)每一项的关系。由题意知,从...原创 2020-03-05 12:29:47 · 240 阅读 · 0 评论 -
王道机试 第二章 暴力求解 2.2 模拟 3、其他模拟
王道机试 第二章 暴力求解2.2 模拟3、其他模拟例题2.9 剩下的树(清华大学复试上机题)#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn = 10005;bool tree[maxn];int main()...原创 2020-03-05 10:19:41 · 201 阅读 · 0 评论 -
王道机试 第二章 暴力求解 2.2 模拟 2、日期问题
王道机试 第二章 暴力求解2.2 模拟2、日期问题例2.6 今年的第几天?(清华大学上机复试题)闰年判断这里需要注意的是,闰年的定义是:能被4整除且不能被100整除,或者能被400整除的年份。#include <iostream>#include <cstdio>using namespace std;int a[] = {31, 28, 31, 3...原创 2020-03-05 10:18:38 · 195 阅读 · 0 评论 -
王道机试 第二章 暴力求解 2.2 模拟 1、图形排版
王道机试 第二章 暴力求解2.2 模拟1、图形排版例2.4 输出梯形(清华大学复试上机题)#include <iostream>#include <cstdio>using namespace std;int main(){ int h; while (cin >> h){ for (int i = h - 1; i >= 0; ...原创 2020-03-05 10:17:14 · 255 阅读 · 0 评论 -
C语言 输出前导零
C语言 输出前导零printf方法:C语言可以使用printf的%0md格式在原来数字的基础上填充前导零,使得其总位数为m位。其中,m代表输出的总位数。例如,m=3时,若原来输出x=22,则使用printf("%03d", x);输出022C代码如下:printf("%03d, number"); // 输出number,若number不足3位,则将其高位全部填充为0....原创 2020-03-04 10:32:20 · 11276 阅读 · 0 评论 -
王道机试 第二章 暴力求解 2.2 模拟
王道机试 第二章 暴力求解2.2 模拟1、图形排版例2.4 输出梯形(清华大学复试上机题)#include <iostream>#include <cstdio>using namespace std;int main(){ int h; while (cin >> h){ for (int i = h - 1; i >= 0; ...原创 2020-03-03 10:54:35 · 399 阅读 · 0 评论 -
王道机试 第二章 暴力求解 2.1 枚举
王道机试 第二章 暴力求解2.1 枚举例2.1 abcabcabc(清华大学复试上机题)#include <iostream>using namespace std;int main(){ for (int a = 0; a < 10; a++){ for (int b = 0; b < 10; b++){ for (int c = 0; c &l...原创 2020-03-03 10:47:37 · 326 阅读 · 0 评论