![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
beashaper_
这个作者很懒,什么都没留下…
展开
-
《程序设计与算法》之【深度优先搜索】
深度优先搜索例题 城堡问题(百练2815)踩方格(百练4892)Roads(百练1724)生日蛋糕(百练1190)深度优先搜索 从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不 了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”。(1)判断从V出发是否能走到终点:bool Dfs(V) { if( V 为终点) ...原创 2018-06-02 13:47:10 · 540 阅读 · 0 评论 -
二叉树编程题总结
求二叉树的最远两个结点的距离由前序遍历和中序遍历重建二叉树判断一棵树是否是完全二叉树求二叉树两个节点的最近公共祖先将二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向求二叉树的最远两个结点的距离短短的代码中其实涉及到了三道题目:利用已知序列递归的建一棵二叉树递归的求一棵树的深度求二叉树中距离最远的两个节点的距离利用类似的思...转载 2018-06-16 16:02:15 · 1260 阅读 · 0 评论 -
《程序设计与算法》之【动态规划】
例题 数字三角形动规解题的一般思路能用动规解决的问题的特点例题 最长上升子序列最长公共子序列数字三角形(POJ1163)题目描述 在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或右下走。只需要求出这个最大和即可,不必给出具体路径。 三角形的行数大于1小于等于100,数字为 0 - 99输入格式:5 ...原创 2018-05-31 18:05:23 · 435 阅读 · 0 评论 -
《程序设计与算法》之【分治算法】
分治的基本概念归并排序快速排序例题 输出前m大的数求排列的逆序数分治的基本概念 把一个任务,分成形式和原任务相同,但规模更小的几个部分任务(通常是两个部分),分别完成,或只需要选一部完成。然后再处理完成后的这一个或几个部分的结果,实现整个任务的完成。分治的生活实例–称假币16枚硬币,有可能有1枚假币,假币比真币轻。有一架天平,用最少称量次数确定有没有假币,若有的...原创 2018-05-31 14:09:32 · 694 阅读 · 0 评论 -
《程序设计与算法》第三章【二分算法】
二分查找例题 二分法求方程的根寻找指定和的整数对二分查找int BinarySearch(int a[], int size, int p) { int L = 0; // 查找区间的左端点 int R = size - 1; // 查找区间的右端点 // int lastPos = -1; ...原创 2018-05-31 08:45:53 · 299 阅读 · 0 评论 -
《程序设计与算法》第二章【递归】
递归的基本概念递归的作用例题 N皇后问题逆波兰表达式四则运算表达式求值爬楼梯放苹果算24递归的基本概念 递归的基本概念:一个函数调用其自身,就是递归 例:求n!的递归函数1. int Factorial(int n) {2. if (n == 0)3. return 1;4. return n * Factorial(n-1);...原创 2018-05-30 23:27:33 · 389 阅读 · 0 评论 -
《程序设计与算法》第一章【枚举】
枚举:基于逐个尝试答案的一种问题求解策略例题:完美立方题目描述 请按照a的值,从小到大依次输出。当两个完美立方 等式中a的值相同,则b值小的优先输出、仍相同则c值小的优先输出、再相同则d值小的先输出。输入样例:24输出样例:Cube = 6, Triple = (3,4,5)Cube = 12, Triple = (6,8,10)Cube = 18, T...原创 2018-05-30 12:29:17 · 236 阅读 · 0 评论 -
北大信科2017机试真题
题库链接:http://jmusoft.openjudge.cn/beida/1.奖学金总时间限制: 1000ms 内存限制: 65536kB 描述 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩...原创 2018-05-30 01:20:10 · 1667 阅读 · 0 评论 -
信息解码(Message Decodng, ACM/ICPC World Finals 1991, UVa213)
#include <stdio.h>#include <string.h>int code[8][1<<8];int readChar() { for (;;) { int ch = getchar(); if (ch != '\n' && ch != '\r') retur...原创 2018-05-24 14:05:08 · 108 阅读 · 0 评论 -
牛客网二叉树编程题
树的高度#include &lt;iostream&gt;#include &lt;vector&gt;using namespace std;int main() { int n, H = 1; int f, c, h; vector&lt;int&gt; nodes(1000, 0); // 有效节点的高度 nodes[0] = 1; ...原创 2018-06-17 00:10:04 · 425 阅读 · 0 评论 -
牛客网历年计算机考研复试上机题在线练习
成绩排序#include &amp;lt;iostream&amp;gt;#include &amp;lt;algorithm&amp;gt;#include &amp;lt;string&amp;gt;#include &amp;lt;cstdio&amp;gt;using namespace std;struct Node { string name;原创 2018-06-17 13:27:25 · 2096 阅读 · 0 评论 -
《王道论坛计算机考研机试指南》第四章【数据结构】代码
一、栈的应用 括号匹配问题#include <iostream>#include <cstdio>#include <stack>using namespace std;stack<int> S;char str[110]; // 保存输入字符串char ans[110]; // 保存输出字符串int main() ...原创 2018-06-17 15:57:07 · 1974 阅读 · 0 评论 -
牛客网计算机历年考研复试上机题
约数的个数#include &lt;cstdio&gt;int main () { int n; scanf("%d", &amp;n); int x; while (n--) { scanf("%d", &amp;x); int ans = 0; for (int i = 1; i *原创 2018-06-28 20:15:43 · 869 阅读 · 0 评论 -
北大POJ百练做题记录
1002:方便记忆的电话号码#include &lt;cstdio&gt;#include &lt;cstring&gt;#include &lt;map&gt;#include &lt;iostream&gt;using namespace std;int num[26] = {2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,原创 2018-06-28 20:14:35 · 1543 阅读 · 0 评论 -
《王道论坛考研机试指南》第三章【数论】
数位拆解进制转换最大公约数最小公倍数素数筛法分解素因数二分求幂高精度整数数位拆解特殊除法#include <cstdio>using namespace std;int main() { int a, b; // 保存两个整数的变量 while (scanf("%d%d", &a, &b) != EOF) { ...原创 2018-06-27 23:13:51 · 666 阅读 · 0 评论 -
《王道论坛计算机考研机试指南》第二章【经典入门】
排序日期类问题Hash应用排序#include <iostream>#include <algorithm>using namespace std;bool cmp(int x, int y) { // 定义排序规则 return x > y;}int main() { int n; int buf[100]; ...原创 2018-06-20 15:19:12 · 4506 阅读 · 0 评论 -
《王道论坛计算机考研机试指南》第七章【动态规划】
递推求解最长递增子序列(LIS)最长公共子序列动态规划问题分析举例背包 0-1背包完全背包多重背包一、递推求解N阶楼梯上楼问题#include<cstdio>using namespace std;int F[91];int main() { F[1] = 1; F[2] = 2; for (int i = 3; i <...原创 2018-06-26 00:21:23 · 484 阅读 · 0 评论 -
北大POJ题目练习
图论Stockbroker Grapevine#include <iostream>#include <cstdio>using namespace std;int ans[101][101];int wtime[101][101];int main() { int n; while (scanf("%d", &n) != EOF ...原创 2018-06-18 14:51:16 · 644 阅读 · 0 评论 -
《王道论坛计算机考研机试指南》第五章【图论】
并查集最小生成树(MST) 最短路径) 并查集int findRoot(int x) { if (Tree[x] == -1) return x; else { int tmp = findRoot(Tree[x]); Tree[x] = tmp; // 将当前节点的双亲节点设置为查找返回的根节点编号 ...原创 2018-06-18 00:59:54 · 489 阅读 · 0 评论 -
《王道论坛计算机考研机试指南》第六章【搜索】
枚举广度优先搜索(BFS)递归递归的应用 回溯法枚举图的遍历深度优先搜索(DFS)一、枚举百鸡问题#include <iostream>#include <cstdio>using namespace std;int main() { int n; while (scanf("%d", &n) != EOF) { ...原创 2018-06-25 01:44:27 · 289 阅读 · 0 评论 -
救济金发放(The Dole Queue,UVa 133)
救济金发放问题描述 n(n<20)个人站成一圈,逆时针编号为1~n。有两个官员,A从1开始逆时针数,B从n开始顺时针数。在每一轮中,官员A数k个就停下来,官员B数m个就停下来(注意有可能来两个官员停在同一人上)。接下来被官员选中的人(1个或者2个)离开队伍。 输n,k,m,输出每轮里被选中的人的编号(如果有两个人,先输出被A选中的)。例如,n=10,k=4,m=3,,输出为4 8,9...原创 2018-05-24 13:09:43 · 247 阅读 · 0 评论 -
刽子手游戏(Hangman Judge, UVa 489)
问题描述 刽子手游戏其实是一款猜单词游戏,游戏规则是这样的:计算机想一个单词让你猜,你每次可以猜一个字母。如果单词里有那个字母,所有该字母会显示出来;如果没有那个字母,则计算机会在一副“刽子手”画上填一笔。这幅画一共需要七笔就能完成,因此你最多只能错6次。注意,猜一个已经猜过的字母也算错。 在本题中,的任务是编写一个“裁判”程序,输入单词和玩家的猜测,判断玩家赢了(You win.)、输了(Y...原创 2018-05-24 12:38:02 · 745 阅读 · 0 评论 -
LeetCode 63. 不同路径 II
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步,机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物,那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1: 输入: [ [0,...原创 2018-05-26 22:53:51 · 452 阅读 · 1 评论 -
《程序设计与算法》之【贪心算法】
圣诞老人的礼物(百练4110)电影节(百练4151)Stall Reservations(百练3190)Radar Installation(百练1328)圣诞老人的礼物(百练4110)题目描述 圣诞节来临了,圣诞老人准备分发糖果,现 在有多箱不同的糖果,每箱糖果有自己的价值和重 量,每箱糖果都可以拆分成任意散装组合带走。圣 诞老人的驯鹿雪橇最多只能装下重量W的糖果,请 问圣诞...原创 2018-06-02 23:59:19 · 2518 阅读 · 0 评论 -
LeetCode 112.路径总和
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 ...原创 2018-05-26 21:59:49 · 1725 阅读 · 0 评论 -
《程序设计与算法》之【广度优先搜索】
广度优先搜索例题抓住那头牛(百练4001)迷宫问题(百练4127)鸣人和佐助(百练6044)八数码问题(百练1077)广度优先搜索广度优先搜索算法如下:(用QUEUE)(1) 把初始节点S0放入Open表中; (2) 如果Open表为空,则问题无解,失败退出; (3) 把Open表的第一个节点取出放入 Closed表,并记该节点为n; (4) 考察节点n是否为目标节...原创 2018-06-02 16:59:33 · 408 阅读 · 0 评论 -
《算法竞赛入门经典》第6章数据结构基础书上例题(一)
再谈栈和队列铁轨(Rails, ACM/ICPC CERC 1997, UVa 514)题目描述 某城市有一个火车站。有n节车厢从A 方向驶入车站,按进站顺序编号为1~n。你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶出车站。例如,出栈顺序(5,4,3,2,1)是可能的,但(5,4,1,2,3)是不可能的。 #include <cstdio>#inc...原创 2018-05-26 13:23:58 · 408 阅读 · 1 评论 -
《算法竞赛入门经典》第五章C++与STL入门书上例题
排序与检索大理石在哪儿(Where is the Marble? UVa 10474)题目描述 现有N各大历史,每个大理石上写了一个非负整数。首先把各数从小到大排序,然后回答Q个问题。每个问题问是否有一个大理石上写着某个整数x,如果是,还要回答哪个大理石上写着x。排序后的大理石从左到右编号为1~N。 样例输入: 4 1 2 3 5 1 5 5 2 1...原创 2018-05-25 16:23:53 · 739 阅读 · 0 评论 -
TeX中的引号(TeX Quotes,UVa 272)
在TeX中,左双引号是"``",右双引号是"''"。输入一篇包含双引号的文章,你的任务是把它转换成TeX的格式。 样例输入: “To be or not to be,” quoth the Bard, “that is the question”. 样例输出: ``To be or not to be, '' quoth the Bard, ``that is ...原创 2018-05-19 23:46:24 · 196 阅读 · 0 评论 -
竖式问题
竖式问题问题描述 找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。 样例输入: 2357 样例输出: <1> 775 X 33 ——-(5个-) 2325 ...原创 2018-05-19 17:25:11 · 248 阅读 · 0 评论 -
蛇形填数
蛇形填数问题描述 在n*n方阵里填入1,2,…,n*n,要求填成蛇形。例如,n=4时方阵为: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 上面的仿真中,多余的空格只是为了便于观察规律,不必严格输出。n<=8#include <stdio.h>#include <string.h&g...原创 2018-05-19 16:26:11 · 114 阅读 · 0 评论 -
WERTYU(UVa10082)
WERTYU问题描述 把手放在键盘上时,稍不注意就会往右错一位。这样,输入Q会变成输入W,输入J会变成输入K等。 输入一个错位后敲出的字符串(所有字母均大写),输出打字员本来想打出的句子。输入保证合法,即一定是错位之后的字符串。例如输入中不会出现大写字母A。 样例输入: O S, GOMR YPFSU/ 样例输出: I AM FINE TODAY.环状序列...原创 2018-05-21 02:03:22 · 462 阅读 · 0 评论 -
环状序列(ACM/ICPC Seoul 2004,UVa1584)
环状序列问题描述 长度为n的环状串有n种表示法,分别为从某个位置开始顺时针得到。 例如上图的环状串有10种表示:CGAGTCAGCT,GAGTCAGCTTC,AGTCAGCTCG等。在这些表示法中,字典序最小的称为“最小表示”。 输入一个长度为n(n<=100)的环状DNA串(只包含A、T、C、G这四种字符)的一种表示法,你的任务是输出该环状串的最小表示。例如,CTCC的最小表...原创 2018-05-22 19:30:18 · 380 阅读 · 0 评论 -
回文词(Palindromes,UVa401)
回文词问题描述 输入一个字符串,判断它是否为回文串及镜像串。输入字符串保证不含数字0。所谓回汶川,就是反转以后和原串相同,如aha和madam。所谓镜像串,就是左右镜像之后和原串相同,如2S和3AIAE。注意,并不是每个字符在镜像之后都能得到一个合法字符。在本题中,每个字符的景象如下表所示(空白项表示该字符镜像后你能得到一个合法字符)。 character reverse ...原创 2018-05-22 19:56:16 · 395 阅读 · 0 评论 -
LeetCode 435. 无重叠区间
给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 注意: 可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1: 输入: [ [1,2], [2,3], [3,4], [1,3] ] 输出: 1 解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2: 输入: [ [...原创 2018-05-28 23:30:03 · 1257 阅读 · 0 评论 -
LeetCode 409. 最长回文串
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。 注意: 假设字符串的长度不会超过 1010。 示例: 输入: abccccdd 输出: 7 解释: 我们可以构造的最长的回文串是dccaccd, 它的长度是 7。本以为把有偶数个数的字母总和...原创 2018-05-28 20:46:12 · 451 阅读 · 0 评论 -
LeetCode 315. 计算右侧小于当前元素的个数
给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于nums[i] 的元素的数量。 示例: 输入: [5,2,6,1] 输出: [2,1,1,0] 解释: 5的右侧有 2 个更小的元素 (2 和 1). 2的右侧仅有 1 个更小的元素 (1). 6的右侧有...原创 2018-05-28 20:07:53 · 1068 阅读 · 0 评论 -
LeetCode 3.无重复字符的最长子串
给定一个字符串,找出不含有重复字符的最长子串的长度。 示例: 给定 abcabcbb ,没有重复字符的最长子串是 abc ,那么长度就是3。 给定 bbbbb,最长的子串就是 b ,长度是1。 给定 pwwkew ,最长子串是 wke ,长度是3。 请注意答案必须是一个子串,pwke 是 子序列 而不是子串。class Solution {public: int lengt...原创 2018-05-28 19:40:07 · 102 阅读 · 0 评论 -
HDU1034-Candy Sharing Game
#include <iostream>using namespace std;const int MAXN = 1000;bool judge(int a[], int n) { for (int i = 2; i <= n; i++) { if (a[1] != a[i]) return false; } ...原创 2018-06-03 20:34:20 · 110 阅读 · 0 评论 -
c语言指针、数组、函数做函数参数详解
用指针做参数#include <stdio.h>void swap(int *a, int* b) { int t = *a; *a = *b; *b = t;}int main() { int a = 3, b = 4; swap(&a, &b); printf("%d %d", a, b); re...原创 2018-05-23 00:08:43 · 2865 阅读 · 0 评论