
题库
The_best_man
努力学习的一只IT小白
展开
-
排序算法分析
排序算法分析冒泡排序代码void bubblesort(vector<int> &list){ for (int i = 0; i < list.size()-1; i++) { for (int j = 0; j < list.size() - i - 1; j++) { if (list[j] > list[j + 1原创 2017-10-16 10:28:30 · 342 阅读 · 0 评论 -
八皇后算法
两个皇后都不能处于同一行、同一列或同一斜线上 讨论如果是八个皇后,即存在于8*8的行列式中,每行每列一定存在一个皇后,现在我们用queen[row]=col 表示在第row行的皇后处于第col列,位置的选定,5人 然后判断此时皇后所处的位置是否发生冲突,如果没有冲突且没有超过row即进行下一行的判断(递归的形式)void EightQueen::putQueen原创 2017-02-16 11:53:45 · 3043 阅读 · 0 评论 -
蓝桥杯省赛试题(持续更新)
所有题目均来自蓝桥杯比赛试题,所有解法全部出自本人思路,大神请走开,有新的想法的可以留言交流C语言B组第八题四平方和四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:5 = 0^2 + 0^2 + 1^2 + 2^27 = 1^2 + 1^2 + 1^2原创 2017-01-02 15:57:33 · 1334 阅读 · 0 评论 -
蓝桥杯练习系统试题持续更新
设置精度并且固定小数点的位数#include#include #includeusing namespace std;int main(){ int radius; cin>>radius; double p=atan(1.0)*4; double area=p*radius*radius; cout<<fixed<<setprecision(7)<<area<<endl;原创 2016-12-30 23:17:36 · 2281 阅读 · 1 评论 -
【计蒜客】合法分数的组合
输入一个自然数N,我们总可以得到一些满足“1≤b≤N,0≤a/b≤1”条件的最简分数a/b(分子和分母互质的分数),请找出所有满足条件的分数。比方说,当N=5时,所有解为:0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1现在,你需要对于一个给定的自然数N,1≤N≤160,请编程按分数值递增的顺序输出所有解。注:0和任意自然数的最大公约数就是那个自然数、互质指最大原创 2017-08-08 19:13:53 · 646 阅读 · 0 评论 -
计蒜之道2017第五场
UCloud 刚刚建立一个新机房,近日正在进行网络搭建。机房内有 nnn 台服务器和 mmm 个分线器,整个机房只有一个网线出口。分线器的作用是将一根网线转换成多根网线。蒜头君也知道每个分线器输出的最大网线根数(不一定要将分线器输出的每根线都用上),问你至少需要使用多少个分线器才能使得每台服务器都有网线可用。输入格式第一行输入 n,m(0≤n,m≤100)n,m(0 \le n,m原创 2017-06-03 20:07:16 · 869 阅读 · 0 评论 -
动态规划之0-1背包问题
动态规划之0-1背包问题这是最好理解的动态规划问题描述对于容纳的总质量为c的背包要求从n个物品中任意选取物品使得最后的总价值最大,对于第i个物品质量为wi价值为vi问题分析对于此类问题我们通常采取动态规划(dynamic programming) 即 dp 核心是找到问题的动态转移方程 对于每一个物品我们有两种取法,即选择与不选择 对于每一次选择我们根据之前的一次情况从中选择出最大的值原创 2017-11-26 19:35:28 · 519 阅读 · 0 评论 -
斐波那契dp
You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? Note: Given n will be a positive原创 2017-04-25 21:54:04 · 765 阅读 · 0 评论 -
杨辉三角与二项式定理
杨辉三角 (a+b)^n展开,多项式展开 (a+b)^0=1 (a+b)^1=a+b (a+b)^2=a^2+2ab+b^2 (a+b)^3=a^3+3a^2b+3ab^2+b^3 显而易见展开式的系数就是杨辉三角的每层的数二维数组形式的杨辉三角根据思路我们杨辉三角的特点我们不难得每一个数据 a[i][j]=a[i-1][j-1]+a[i-1][j] 下面上代码#incldue<io原创 2017-04-22 10:28:42 · 3244 阅读 · 0 评论 -
扩展欧几里得算法
在介绍扩展欧几里得算法之前我们首先引入欧几里得算法欧几里得算法在最开始接触c或者c++时,我们通常会用来编辑如何计算最大公约数得方法即辗转相除法(欧几里得算法)与更相减损数,辗转相除的关键在于gcd(a,b)=gcd(b,a mod b)它和边界一起构成了下面的程序:int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}此次的递归程序不会溢出,知原创 2017-04-20 10:42:12 · 432 阅读 · 0 评论 -
广场舞
题目LQ市的市民广场是一个多边形,广场上铺满了大理石的地板砖。地板砖铺得方方正正,就像坐标轴纸一样。 以某四块砖相接的点为原点,地板砖的两条边为两个正方向,一块砖的边长为横纵坐标的单位长度, 则所有横纵坐标都为整数的点都是四块砖的交点(如果在广场内)。广场的砖单调无趣,却给跳广场舞的市民们提供了绝佳的参照物。每天傍晚,都会有大批市民前来跳舞。 舞者每次都会选一块完整的砖来跳舞,两个人不会选择同原创 2017-05-11 22:42:08 · 2428 阅读 · 6 评论 -
第六届决赛真题
A组第一题标题:方格填数在2行5列的格子中填入1到10的数字。 要求: 相邻的格子中的数,右边的大于左边的,下边的大于上边的。如【图1.png】所示的2种,就是合格的填法。请你计算一共有多少种可能的方案。解法1.暴力解决#include<iostream>#include<algorithm>using namespace std;int a[10] = { 1,2,3,4,5,6,7,8原创 2017-04-16 11:31:53 · 526 阅读 · 0 评论 -
通过金矿模型介绍动态规划
对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划。本文力求通俗易懂,无异性,不让读者感到迷惑,引导读者去思考,所以如果你在阅读中发现有不通顺的地方,让你产生错误理解的地方,让你难得读懂的地方,请跟贴指出,谢谢! ----第一节转载 2017-03-26 09:55:32 · 4385 阅读 · 0 评论 -
蓝桥杯数字排列
今有7对数字:两个1,两个2,两个3,…两个7,把它们排成一行。 要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列:17126425374635当然,如果把它倒过来,也是符合要求的。请你找出另一种符合要求的排列法,并且这个排列法是以74开头的。这道题的基本思想还是dfs,回溯 74XXXX4X7XXXX首先我们将按照题目摆放好 7原创 2017-03-23 22:43:39 · 857 阅读 · 0 评论 -
数独
数独9行9列的格子,完成数独 例如: 输入 0 0 5 3 0 0 0 0 0 8 0 0 0 0 0 0 2 0 0 7 0 0 1 0 5 0 0 4 0 0 0 0 5 3 0 0 0 1 0 0 7 0 0 0 6 0 0 3 2 0 0 0 8 0 0 6 0 5 0 0 0 0 9 0 0 4 0 0 0 0 3 0 0 0 0 0 0 9 7 0 0 输出 1原创 2017-03-22 23:42:59 · 849 阅读 · 0 评论 -
并查集的使用及其实现
并查集概述性质并查集算法(union_find sets)不支持分割一个集合,求连通子图、求最小生成树用法并查集是由一个数组pre[],和两个函数构成的,一个函数为find()函数,用于寻找前导点的,第二个函数是join()用于合并路线的int find(int x){ int r=x; while(pre[r]!=r) r=pre[r];//找到他的前导结点 in原创 2017-03-16 11:13:25 · 33710 阅读 · 17 评论 -
【计蒜客】红黑点
题目在二维平面有 n 个红点和 m 个黑点,已知这些点的坐标,这些点不存在三点共线的情况。从这些红点中任意取出三个点,可以构成 n * ( n - 1 ) * ( n - 2 ) / 6 个三角形,求这些三角形中包含黑点的数量为奇数的三角形的数量。输入格式 输入包含多组测试数据,对于每组测试数据: 第一行包含两个整数 n m ( 3 ≤ n ≤ 100 ; 0 ≤ m ≤ 1000 ) 。 接原创 2017-05-20 10:13:20 · 605 阅读 · 0 评论 -
居民集会
题目居民都生活在一条公路的边上,公路的长度为L,每户家庭的位置都用这户家庭到公路的起点的距离来计算,第i户家庭距起点的距离为di。每年,蓝桥村都要举行一次集会。今年,由于村里的人口太多,村委会决定要在4个地方举行集会,其中3个位于公路中间,1个位最公路的终点。已知每户家庭都会向着远离公路起点的方向去参加集会,参加集会的路程开销为家庭内的人数ti与距离的乘积。给定每户家庭的位置di和人数ti,请为村委原创 2017-05-18 16:14:09 · 2399 阅读 · 8 评论 -
名企笔试:2016奇虎360研发工程师内推笔试编程题(出现一次的字符)
正在挑战一个CrackMe的你,把需要填写的前面几位密码都正确猜出了,可是这最后一位密码,好像藏得有点深。CrackMe的作者还挑衅般的在里面藏了个.tar.gz文件,解压缩出来,里面写道你要的最后一个字符就在下面这个字符串里,这个字符是下面整个字符串中第一个只出现一次的字符”。(比如,串是abaccdeff,那么正确字符就是b了) 然而下面给出来的字符串好像太原创 2017-02-28 08:46:24 · 665 阅读 · 0 评论 -
名企笔试
京东2016算法工程师笔试题(登楼梯)有一段楼梯台阶有15级台阶,以小明的脚力最多可以一次跨上三级台阶,问有多少种方法登上这段楼梯?#includeusing namespace std;int compute(int n){ int sum=0; //统计 if(n==1)sum=1; else if(n==2)sum=2; else if(n==3)sum=原创 2017-02-06 12:06:40 · 661 阅读 · 0 评论 -
第六届蓝桥杯九数分组
九数组分数1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法?#include void test(int x[]){ int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3]; int b = x[4]*10000 + x[5]*1000 + x[6]*100 + x[7]*10 + x[8]; if(a*3==b)原创 2017-03-03 20:17:24 · 867 阅读 · 0 评论 -
小明玩牌
小明被劫持到X赌城,被迫与其他3人玩牌。一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?#includeusing namespace std;int sum = 0;//手牌数int count1 =原创 2017-03-07 23:16:05 · 936 阅读 · 0 评论 -
字符分析
输入一个字符串,内有数字和非数字字符,如:a123x456}17960?302tab5876将其中连续的数字作为一个整体,依次存放到一个数组a中。例如,123放在a[0],456放在a[1]……,统计共有多少整数,并输出这些整数。输入格式:每个输入包含1个测试用例,即一个不超过80位的字符串。输出格式:按照从左到右的顺序输出所有整数,用逗号分隔。输入样例:a原创 2017-03-05 08:59:25 · 818 阅读 · 0 评论 -
第六届蓝桥杯省赛试题B组
奖券数目有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。请提交该数字(一个整数),不要写任何多余的内容或说明性文字。#includeusing na原创 2017-02-26 16:40:28 · 1384 阅读 · 0 评论 -
查验身份证
一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:Z:0 1 2 3 4 5 6 7 8 9 10M:1 0 X 9 8 7 6 5 4 3 2现在给定原创 2017-03-07 00:07:18 · 531 阅读 · 0 评论 -
加法变乘法
加法变乘法我们都知道:1+2+3+ ... + 49 = 1225现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015比如:1+2+3+...+10*11+12+...+27*28+29+...+49 = 201510就是符合要求的答案。请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。注意:需要你提交的是一个整数,不要原创 2017-03-07 08:55:18 · 672 阅读 · 0 评论 -
方格填数
方格填数如下的10个格子填入0~9的数字。要求:连续的两个数字不能相邻。(左右、上下、对角都算相邻)一共有多少种可能的填数方案?请填写表示方案数目的整数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。注意:在最开始我将设置空格转换为一维数组,我看似觉得思路很正确但是却忽略了对于边界的检验 b原创 2017-03-11 10:45:54 · 701 阅读 · 0 评论 -
计蒜客模拟赛(五)第九题
计蒜客模拟赛第九题在一个 n×m 的方格地图上,某些方格上放置着炸弹。手动引爆一个炸弹以后,炸弹会把炸弹所在的行和列上的所有炸弹引爆,被引爆的炸弹又能引爆其他炸弹,这样连锁下去。 现在为了引爆地图上的所有炸弹,需要手动引爆其中一些炸弹,为了把危险程度降到最低,请算出最少手动引爆多少个炸弹可以把地图上的所有炸弹引爆。 输入格式 第一行输两个整数 n, m,用空格隔开。 接下来 n 行,每行输入原创 2017-04-06 23:19:45 · 1802 阅读 · 4 评论 -
生命之树
生命之树他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值。 上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都存在一个点列 {a, v1, v2, …, vk, b} 使得这个点列中的每个点都是S里面的元素,且序列中相邻两个点间有一条边相连。在这个前提下,上帝要使得S中的点所对应的整数的和尽量大。 这个最大的和就是上帝给生命之树的评分。经过a原创 2017-03-31 22:39:17 · 556 阅读 · 0 评论 -
并查集详解
这个文章是几年前水acm的时候转的, 当时也不知道作者是谁, 要是有人知道的话说一下吧并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告转载 2017-03-16 09:35:38 · 9271 阅读 · 18 评论 -
凑平方数
题目凑平方数把0~9这10个数字,分成多个组,每个组恰好是一个平方数,这是能够办到的。 比如:0, 36, 5948721再比如: 1098524736 1, 25, 6390784 0, 4, 289, 15376 等等…注意,0可以作为独立的数字,但不能作为多位数字的开始。 选自第七届蓝桥杯B组第二题(填空题)分析利用next_permutation()将十个数字排序,然后我们按照d原创 2017-05-04 18:50:56 · 3599 阅读 · 0 评论 -
最大的最小公倍数
算法训练 最大最小公倍数时间限制:1.0s 内存限制:256.0MB问题描述已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。输入格式输入一个正整数N。输出格式输出一个整数,表示你找到的最小公倍数。样例输入9样例输出504数据规模与约定1 6。分析 1---N中我们应该从大到小考虑,首先我原创 2017-02-08 09:51:03 · 607 阅读 · 0 评论