算法
文章平均质量分 73
时间胶嚢
向JAVA软件工程师前进
展开
-
2016年第七届蓝桥杯C/C++B组省赛——方格填数
如下的10个格子填入0~9的数字。要求:连续的两个数字不能相邻。(左右、上下、对角都算相邻)一共有多少种可能的填数方案?请填写表示方案数目的整数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。1、思路:利用全排列(10个数10个空格,刚好符合,代码有格式)+约束条件2、过程:开始不知道怎么写,①本来想用一维数组的,因为全排列的题都是用一维数组,但是很麻烦,就弄...原创 2020-02-29 14:42:03 · 199 阅读 · 0 评论 -
蓝桥杯数学题,找不到规律就枚举
蓝桥杯的特点:暴力破解例题:2016年蓝桥杯B组C/C++省赛第8题第八题:四平方和四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:5 = 0^2 + 0^2 + 1^2 + 2^27 = 1^2 + 1^2 + 1^2 + 2^2(^符号表示乘方的意思)对于一个给定的正整数,可能存在多种...原创 2020-03-04 13:39:42 · 210 阅读 · 0 评论 -
2015年第六届蓝桥杯C/C++B组省赛题目第三题三羊献瑞
利用全排列#include<stdio.h>#include<stdlib.h>int isok(int i,int j){ if(j==0||j==4){ if(i==0) return false; } return true;} void perm(int a[],int p,int q){ if(p==8){ int x=a[0]*1000...原创 2020-03-05 13:07:09 · 236 阅读 · 0 评论 -
2015年第六届蓝桥杯C/C++B组省赛题目第一题奖券数目答案
方法一:笔算第五位数有9种可能,第一位数到第四位数有10种可能,排除4,则答案为89999=52488方法二:利用求余运算#include<stdio.h>int judge(int i){ while(i>0){ if(i%10==4) return false; i/=10; } return true;}int main(){ int i;...原创 2020-03-05 09:27:33 · 310 阅读 · 0 评论 -
2015年第六届蓝桥杯C/C++B组省赛题目二、星系炸弹答案
方法一:用excel1、把空格数字格式变成日期模式2、利用sum函数计算方法二、手算(有计算器最后用计算器,比较保险)2014有52天2015有365天2016有366天则到207.8.5时有217天...原创 2020-03-05 11:37:11 · 326 阅读 · 0 评论 -
2015年第六届蓝桥杯C/C++B组省赛题目及个人解析
文章目录一、奖券数目二、星系炸弹三、三羊献瑞四、格子中输出五、九数组分数六、加法变乘法七、牌型种数八、移动距离九、垒骰子十、生命之树一、奖券数目有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不...原创 2020-03-05 08:56:11 · 353 阅读 · 0 评论 -
整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetCode)...原创 2020-04-02 20:47:42 · 237 阅读 · 0 评论 -
分类讨论
一、分奇偶讨论题目:移动距离X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3…当排满一行时,从下一行相邻的楼往反方向排号。比如:当小区排号宽度为6时,开始情形如下:1 2 3 4 5 612 11 10 9 8 713 14 15 …我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动)输入为3个整数w m n,空格分开...原创 2020-03-06 14:32:22 · 151 阅读 · 0 评论 -
深度优先算法
一、图的直接遍历二、正方形或者长方形的要标记原创 2020-02-29 22:11:53 · 163 阅读 · 0 评论 -
理解区间dp和例题
一、讲解1、作用用于不知道从哪里合并的动态规划题,不比线性dp2、解法步骤即枚举区间长度,再枚举左端点,之后枚举区间的断点进行转移。3、核心思路既然让我求解在一个区间上的最优解,那么我把这个区间分割成一个个小区间,求解每个小区间的最优解,再合并小区间得到大区间即可。所以在代码实现上,我可以枚举区间长度len为每次分割成的小区间长度(由短到长不断合并),内层枚举该长度下可以的起点,自然终点也就明了了。然后在这个起点终点之间枚举分割点,求解这段小区间在某个分割点下的最优解。4、图解法二原创 2020-10-01 10:28:45 · 129 阅读 · 0 评论 -
哈希表
思路:利用空间复杂度来减少时间复杂度作用:查找用,用下标查找适用语言:java,python,例题:两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = ...原创 2020-03-17 10:38:26 · 139 阅读 · 0 评论 -
利用算法dfs解决的问题
一、树的遍历二、图的遍历例题:危险系数/*这道题可以用dfs来解决。如果从a到b可走的n条路中,其中某个点出现了n次,则这个点就是割点,去掉它则不通。从a到b有n种方法,则n种方法都路过的点就是关键点 */ #include<stdio.h>#include<string.h>int graph[1005][1005];int visited[1005];int n;int times[1005];int ans=0;void dfs(int x,int原创 2020-10-10 20:07:13 · 977 阅读 · 0 评论 -
快速幂
例如2^6= ((22)2)^2#include<stdio.h>//快速幂,求4的6次方 int main(){ long long t=1; long long tmp=4; long long p=6; while(p!=0){ if(p&1==1){t=t*tmp;printf("1\n");} //如果n为奇数,则会执行两次,循环开头和结尾,...原创 2020-03-07 11:30:40 · 99 阅读 · 0 评论 -
回溯法
一:NP完成问题原创 2020-03-10 13:33:43 · 163 阅读 · 0 评论 -
二叉查找树
1、特点其左子树中所有结点的键值小于该结点的键值;其右子树中所有结点的键值大于等于该结点的键值;其左右子树都是二叉搜索树。没有重复值2、结点typedef struct tree{int value;struct tree *left;struct tree *right;}Tree;3、查找若链接为空,则查找失败4、插入(构造就用插入法)若查找为空,则在那个链接增加查...原创 2020-03-12 21:25:35 · 120 阅读 · 0 评论 -
蓝桥杯分苹果之差分数组
一、知识点差分数组:1、定义:某一数组的前一项-后一项的查,即差分数组da[i]=stu[i]-stu[i-1] (i>0),stu[0]=0;2、作用范围:只能是区间元素同时增加或减少相同的数的情况才能用3、作用:数组连续区间同时增或者同时减时,避免区间修改的数据量大时导致超时4、例子:在a和b区间同时增加c,则da[a]+=c;da[b+1]-=c;之后stu[i]=da[1]+da[2]+…+da[i] (i>0)二、例题1、分苹果2、代码#include<std原创 2020-10-08 09:05:24 · 119 阅读 · 0 评论 -
摩尔投票法
核心就是对拼消耗。玩一个诸侯争霸的游戏,假设你方人口超过总人口一半以上,并且能保证每个人口出去干仗都能一对一同归于尽。最后还有人活下来的国家就是胜利。那就大混战呗,最差所有人都联合起来对付你(对应你每次选择作为计数器的数都是众数),或者其他国家也会相互攻击(会选择其他数作为计数器的数),但是只要你们不要内斗,最后肯定你赢。最后能剩下的必定是自己人。应用:查找列表中出现次数大于n/m的元素...原创 2020-03-13 21:25:47 · 127 阅读 · 0 评论 -
算法之并查集和带权并查集
一、解决的问题并查集被很多OIer认为是最简洁而优雅的数据结构之一,主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作:合并(Union):把两个不相交的集合合并为一个集合。查询(Find):查询两个元素是否在同一个集合中。二、常规并查集三、路径压缩并查集四、按秩合并(最优化的)五、查找方法,判断两个元素是否同个根节点参考资料算法学习笔记(1) : 并查集...原创 2020-09-30 16:37:22 · 158 阅读 · 0 评论 -
全排列
一、概念:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。二、代码实现三、例子求1,2,3三个数的全排列#include <stdio.h> //递归法 void swap(int *m,int *n){ int i; i=*m; *m=*n; *n=i; retu...原创 2020-02-28 14:15:40 · 167 阅读 · 0 评论 -
利用栈将递归转换为非递归的方法
通过上述讨论,可以看出递归程序在执行时需要系统提供隐式栈这种数据结构来实现,对于 一般的递归过程,仿照递归算法执行过程中递归工作栈的状态变化可直接写出相应的非递归算法。这种利用栈消除递归过程的步骤如下:(1)设置一个工作栈存放递归工作记录(包括实参、 返回地址及局部变量等)。(2)进入非递归调用入口(即被调用程序开始处) 将调用程序传来的实在参数和返回地址入 栈(递归程序不可以作为主程序,因...原创 2020-03-15 12:12:25 · 3475 阅读 · 0 评论 -
矩阵快速幂
一、基本概念1、作用:减少时间复杂度,把递加变成递乘2、计算:第一个矩阵行乘于第二个矩阵的列3、用法:求解一些递推公式的第n项的时候,通过递推公式构造转移矩阵,并用矩阵快速幂可以快速得到第n项的值。特别对于n很大的时候不能循环迭代,只能用矩阵快速幂解决。、4、构造转移矩阵:根据矩阵乘法性质(根据矩乘原理(怎么乘的)构造转移矩阵),构造转移矩阵即转移矩阵为图片第一个矩阵那么求Fn时...原创 2020-03-07 12:18:42 · 201 阅读 · 0 评论 -
树的知识
二叉树1、性质1 在二叉树的 第i层上至多有2^(i-l) 个结点(i>=1)2、性质2 深度为K的二叉树至多有 2^k-1个结点 (k>=1)。3、性质3 对任何一棵二叉树T, 如果其终端结点数为n。度为2的结点数为n2,则n0= n2+l。 (n=n0+n1+n2,n=n1+2n2)完成二叉树4、具有n个结点的完全二叉树的深度为[log2n]+ 1 。5、 据完全二叉树...原创 2020-03-16 10:48:05 · 194 阅读 · 0 评论 -
闰年函数
int run(int year){ if(year%4==0||year%100=0||year%400==0) return true; return false;}原创 2020-03-09 18:00:29 · 421 阅读 · 0 评论 -
最大子矩阵和
一、题目题目描述:现给出一个N*N矩阵,要求求出拥有最大和的子矩阵的和。例子如下图所示:具体解法:引用别人的:https://blog.csdn.net/qq_39559641/article/details/98721603?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158467517419724845038945%...原创 2020-03-20 15:42:34 · 340 阅读 · 0 评论 -
数组空间不够的解决方法
1、利用指针2、静态的数组空间大小不能超过64k3、设置动态数组,4、设置全局数组例题7-32 说反话-加强版给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过500000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。输出格式: 每个测...原创 2020-02-08 12:04:48 · 2509 阅读 · 0 评论 -
模拟竖式除法
应用:用于一个有规律被除数可能超过数据类型的范围例题:L1-046 整除光棍 (20分)这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以...转载 2020-02-05 11:42:06 · 1167 阅读 · 0 评论 -
算法之数论
1、整除 a|b2、约数=因数,质因数,即能整除给定正整数的质数3、快速幂,2^22 = ((22)2’’’)^24、埃式筛法。思想:要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数5、算一个数的因数的个数和各各值把一个数分解为质数相乘的形式例:10=2×5=21×5110的因子:1(20×50),2(21×50),5(20×51),10(21×...原创 2020-02-01 19:12:36 · 159 阅读 · 0 评论 -
天梯赛试题
试题1、如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。输入格式:输入在一行中给出1个正整数,单位是厘米。输出格式:在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。输入样例:170输出样例:5 6代码...原创 2020-01-17 21:09:33 · 699 阅读 · 0 评论