自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 问答 (2)
  • 收藏
  • 关注

原创 L2-1 特立独行的幸福 (25 分)

#include <bits/stdc++.h>using namespace std;int diedai(int x){//计算平方累加和 int d = 0; while(x){ d+= (x%10)*(x%10); x/=10; } return d;}int num[10010];bool isprime(int x){ //判断素数 if(x==1) return false; for(int

2021-04-21 21:32:40 263

原创 第四章 KMP算法

4.1 前后缀概念串的前缀:一定包含第一个字符,但是不包含最后一个字符的子串串的后缀:一定包含最后一个字符,但是不包含第一个字符的子串4.2 求next数组(手算原理)原理:当第j个字符匹配失败的时候,有前1~j-1个字符组成的串记为S,则next[j]=S的前后缀相等的最长长度+1。特别的有next[1]=0next[2]=1求ababaa的next数组:序号123456模式串ababaanext[j]0112344.

2021-03-29 21:45:16 196 1

原创 第三章 栈

括号匹配问题leetcode20算法:依次扫描所有字符,遇到左括号((,[,{)就push入栈,遇到右括号(),],})就与栈顶元素进行检查匹配。匹配失败的情况有:栈为空左右括号不匹配最后栈里面元素有多余匹配正确栈顶元素出栈。class Solution {public: bool isValid(string s) { stack<char> re; for(int i=0;i<s.size();i++){

2021-03-25 21:37:26 199

原创 Xcode下使用bits/stdc++.h头文件

在桌面上建立bits文件夹创建一个文件名为stdc++.h,内容如下:// C++ includes used for precompiling -*- C++ -*-// Copyright (C) 2003-2014 Free Software Foundation, Inc.//// This file is part of the GNU ISO C++ Library. This library is free// software; you can redistribute .

2021-02-23 14:07:49 728 3

原创 L2-030 冰岛人 (25分)

题目2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名。好事者发现冰岛人的名字后面似乎都有个“松”(son),于是有网友科普如下:冰岛人沿用的是维京人古老的父系姓制,孩子的姓等于父亲的名加后缀,如果是儿子就加 sson,女儿则加 sdottir。因为冰岛人口较少,为避免近亲繁衍,本地人交往前先用个 App 查一下两人祖宗若干代有无联系。本题就请你实现这个 App 的功能。输入格式:输入首先在第一行给出一个正整数 N(1<N≤10​5​​ ),为当地人口数。随后 N 行,每行给出一

2020-11-08 21:36:06 413

原创 2017-L3-1 二叉搜索树的结构 (30分)

题目二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树。(摘自百度百科)给定一系列互不相等的整数,将它们顺次插入一棵初始为空的二叉搜索树,然后对结果树的结构进行描述。你需要能判断给定的描述是否正确。例如将{ 2 4 1 3 0 }插入后,得到一棵二叉搜索树,则陈述句如“2是树的根”、“1和4是兄弟结点”、“3和0在同一层上”(指自顶向下的深度相

2020-10-31 19:30:52 494

原创 swift 闭包

类似于python中的lambda函数(匿名函数)语句格式:{ (parameters) -> return type in statements}最初的函数格式:func backward(_ s1: String, _s2: Strin) -> Bool { return s1 > s2}var reverseNames = names.sorted(by: backward)改写成闭包格式:reverseNames = names.sorted(by: {

2020-05-23 21:11:03 197

原创 swift函数

函数类型:参数类型和函数返回值共同组成使用方法:使用函数类型:将一个恰当的函数赋值给一个类型为函数的变量或常量var mathFunction: (Int, Int) -> Int = addTwoIntslet anotherMathFunction = addTwoInts//与mathFunction一样使用:mathFunction(2, 3)类型为函数的变量也可以像普通变量一样进行赋值函数类型可以作为参数传给函数func printMathresult(_ mathFunct

2020-05-22 16:41:33 133

原创 swift 集合

集合:无序的,唯一的(distinct & unordered)Swift的集合没有简单缩写,只能写成Set<element>集合可以用[]清空 声明:var favouriteGenres: Set = ["Rock", "Classical", "Hip Hop"]一些用法:查询个数:favouriteGenres.count判断是否为空:favouriteGenres.isEmpty插入:favouriteGenres.insert(" ")az删除:favouri

2020-05-22 16:41:06 277

原创 swift programming languag 笔记

swift数据类型IntDoubleFloatStringBoolOptional集合类型ArraySetDictionaryTuple常量与变量let声明常量,var声明变量常量的值一旦确定就不能更改了var的willset, didset用法var KittyMoney = 0 { willSet {//在这个值被修改前调用 print("Original Money: \(KittyMoney)") } didSet {/

2020-05-17 21:08:45 979

原创 swift 闭包

闭包形式{ (<#parameters#>) -> <#return type#> in <#statements#>}

2020-05-10 15:17:20 150

原创 swift函数

函数的形式func <#name#>(<#parameters#>) -> <#return type#> { <#function body#>}"_"表示函数条用的时候,忽略参数名称func plus(_ a: Int, b: Int) { print( a+b )}plus(1, b: 2)形参加and,也可以忽略掉参数名称func plus1(_ a: Int, and b: Int) { p

2020-05-10 15:16:29 118

原创 二分法的边界问题

1. 查找一个特定的元素模版如下:int l=1,r=n;while (l<=r){ int mid=(l+r)/2; if (a[mid]==key) return mid; else if (a[mid]>key) r=mid-1; else l=mid+1;}return -1;这是最基本的二分查找a[mid]==key的情况,因...

2020-04-15 16:45:11 653

原创 利用线段树查询一段区间内的最大值(值,下标)

题目举例:小明要组织一台晚会,总共准备了 n 个节目。然后晚会的时间有限,他只能最终选择其中的 m 个节目。这 n 个节目是按照小明设想的顺序给定的,顺序不能改变。小明发现,观众对于晚会的喜欢程度与前几个节目的好看程度有非常大的关系,他希望选出的第一个节目尽可能好看,在此前提下希望第二个节目尽可能好看,依次类推。小明给每个节目定义了一个好看值,请你帮助小明选择出 m 个节目,满足他的要求。...

2020-04-06 17:22:42 1128

原创 算法训练 开心的金明

关注微信公众号 CodeFun 更多题解思路状态转移方程如下:dp[i+1][j]dp[i+1][j]dp[i+1][j]从0到i这i+1个物品中选出总重量不超过j的物品时总价值的最大值dp[0][j]=0dp[0][j]=0dp[0][j]=0dp[i+1][j]={dp[i][j](j<w[i])max⁡(dp[i][j],dp[i][j−v[i]]+v[i]×w[i]...

2020-01-18 22:01:06 265

原创 算法训练 明明的随机数

关注微信公众号:CodeFun 看更多题解思路因为数据很小,所以可以开一个1010的数组(初始化为0),将输入数据标记为1。然后统计第一次标记为1的个数然后从1到1000循环一遍,输出值为1的数code#include <bits/stdc++.h>using namespace std;int a[1010];int main(){ int n,x,c...

2020-01-18 17:51:15 195

原创 算法训练 FBI树

关注微信公众号:CodeFun 看更多题解思路利用递归的思想,分位左一半右一半去判断子串的类型注意点是每次递归的边界条件和结束条件最后按照后序遍历的思想来,递归完左子串和右子串后输出当前子串的类型code#include <bits/stdc++.h>using namespace std;string s;void getFBI(int st,int ed)...

2020-01-18 11:30:26 360

原创 算法训练 最大最小公倍数

微信公众号:CodeFun思路奇数的时候,n,n-1,n-2无公因子,直接相乘便是最大的最小公倍数偶数的时候,需要考虑因子为2的情况,但是n-1,n-3这两个最大的奇数需要保留,但是n-3和n可能会有公因子3的情况,所以可能的情况会有n-1,n-3,n或者 n-1,n-2,n-3两者情况举例:考虑6,相邻情况为 2 3 4 5 6 ,最大的最小公倍数为60(3,4,5)而不是30(3,...

2020-01-16 19:54:44 237

原创 算法训练 区间k大数查询

微信公众号:CodeFun思路注意题目中给出的数据是无序的所以在给定区间询问的时候,可以将数push到优先队列中,查询到该区间中第k大数,也可以排序后在该区间查询第k大数code#include <bits/stdc++.h>using namespace std;int main(){ int n,x,y,z,t; cin>>n; ...

2020-01-16 19:09:31 158

原创 1002 写出这个数 (20分)

微信公众号:CodeFun思路用数组将拼音存起来,这样减少了代码长度。然后求和输出每一位的拼音。code#include <bits/stdc++.h>using namespace std;string c[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};int main(){ int s...

2020-01-15 21:00:53 258

原创 算法训练 P0505

思路在1,2,3,4,5,6,7,8,9中九个数里面,可以产生后尾0的只有包含2因子的数和5相乘的结果,所以计算出阶乘中2与5的因子个数,利用因子个数差和其它的因子相乘%10就可以产生非零的数5的因子怎么乘最后%10都是52的因子相乘最后%10 有四种情况2 4 8 6 。不能直接乘,因为数会溢出code#include <bits/stdc++.h>using nam...

2020-01-15 11:35:59 119

原创 基础练习 完美的代价

思路需要弄清楚什么时候impossible?1.当字符串的个数为偶数的时候,一旦有字符的个数是奇数个数就不会构成回文串2.当字符串个数为奇数的时候,可以有字符出现奇数个数,前提是字符串最中间那位是出现奇数位个数的那个字符(只有一个)当出现奇数位的个数的时候,不需要将奇数位的字符移动到中间去。这也就是题目里面提示的贪心思想,即碰到奇数个数的字符最后将其移动到中间去。避免移动到中间后每次移动...

2020-01-14 19:00:03 99

原创 PTA甲级 1002 A+B for Polynomials

题意求A有序多项式+B有序多项式后的有序多项式,输入中前者是指数,后者是系数。思路双指针法思想:用一个指针遍历a数组,一个指针遍历b数组。比较两者的指数大小。如果a当前指向的元素指数大的话,将此元素放入答案数组,同时a当前指针往后移动一个。同理对b进行同样的操作。如果a和b当前的指针相同,则将其系数相加(不为0)放入答案数组。边界条件:可能会导致a或b提前遍历完,所以要将剩余的元素全部...

2019-12-31 21:16:45 225

原创 PTA甲级 1001 A+B Format

题意给定a,b,求出a+b的和,然后每三位数字以逗号分隔,除非数少于三位。思路利用to_string 将数据转换为字符串,然后逆序每三位加逗号代码#include <bits/stdc++.h>using namespace std;int main(){ int a,b; cin>>a>>b; string s=to_st...

2019-12-31 20:44:30 203

原创 算法训练 相邻字母

思路26个字母一个循环code#include <bits/stdc++.h>using namespace std;int main(){ char c; cin>>c; if(islower(c)) cout<<char('a'+(c-'a'+25)%26)<<c<<char('a'+(c-'a'+2...

2019-12-27 19:15:51 636

原创 算法训练 求先序排列 递归

题目链接思路在中序序列循环一遍找到根节点,根节点其实就是后序遍历的最后一个节点。这样就将中序遍历划分为左右子树,在左右子树里面分别重复之前的操作。code#include <bits/stdc++.h>using namespace std;string in,post;void preorder(int root,int st,int ed){ if(st&gt...

2019-12-27 18:59:44 213

原创 算法训练 王、后传说 (n皇后问题) 回溯

思路考察搜索给定一个棋盘,设左上角的坐标为原点(1,1)(1,1)(1,1),已经放好的皇后坐标为(i,j)(i,j)(i,j),不同行,不同列,不同斜线的新皇后坐标为(r,c)(r,c)(r,c),则关系如下:横向i≠ri\ne ri​=r纵向j≠cj\ne cj​=c斜对角从(i,j)(i,j)(i,j)到(r,c)(r,c)(r,c)有四种情况(i+a,j+a),(i−a,j...

2019-12-27 14:00:40 477

原创 算法训练 s01串 递归

题目链接思路用两个字符串,第一个字符串是原本的,第二个字符串放变换后的。每次将变换好的复制给原来的,变换好的晴空,循环n次。code#include <bits/stdc++.h>using namespace std;string ans,s="0";void dfs(int n){ if(n==0) return; for(int i=0;i<s...

2019-12-27 13:17:30 180 1

原创 基础练习 Sine之舞 递归

题目链接思路规律的输出用递归。code#include <bits/stdc++.h>using namespace std;int x,y,n;//因为Sn和An是反着的,y要根据每次Sn递归的上界更改void dfs(int n){ if(n==0) return; cout<<"sin("; cout<<y-n+1;...

2019-12-27 13:01:09 143

原创 算法训练 幂方分解 递归

题目链接思路这种规律的格式输出利用递归方法解决。code#include <bits/stdc++.h>using namespace std;void dfs(int n){ if(n==0){ cout<<'0'; return; } int cnt=0; for(int i=31;i>=...

2019-12-27 12:08:50 136

原创 算法训练 字符串变换 模拟

思路前面四步都是简单的。第五步可以考虑用两个指针,第一个指针定位,第二个指针从当前位置开始,找到最长连续的字母个数,如果子串长度大于等于2了,说明该子串需要缩写。code#include <bits/stdc++.h>using namespace std;int main(){ int n; string s; cin>>n>...

2019-12-26 21:52:15 196

原创 基础练习 2n皇后问题 搜索

思路考察搜索给定一个棋盘,设左上角的坐标为原点(0,0)(0,0)(0,0),已经放好的皇后坐标为(i,j)(i,j)(i,j),不同行,不同列,不同斜线的新皇后坐标为(r,c)(r,c)(r,c),则关系如下:横向i≠ri\ne ri​=r纵向j≠cj\ne cj​=c斜对角从(i,j)(i,j)(i,j)到(r,c)(r,c)(r,c)有四种情况(i+a,j+a),(i−a,j...

2019-12-26 18:20:58 180

原创 二叉树

最常见的问题知道两个遍历的顺序,求另一个遍历的顺序二叉树的遍历层序遍历先序遍历中序遍历后序遍历练习 1710 Binary Tree Travesals(先序,中序求后序)...

2019-12-06 21:09:19 73

原创 并查集

合并优化通过记录高度,高度相同两者中取一个当作根节点,然后高度加1。高度不相同的,将高度矮的加到高度高的上面去,高树的高度不变。void unions(int x,int y){ x=find(x); y=find(y); if(height[x]==height[y]){ s[x]=y; height[y]+=1; }else{...

2019-12-06 10:57:13 125 1

原创 1119 Pre- and Post-order Traversals (30 分)

解题思路检查每个节点是否有两个子结点因为只有一个子结点的话,它既可以是左儿子也可以是右儿子。(前序和中序不能确定一颗唯一二叉树的原因。)题目中如果是NO的话,随便选一个,(答案不唯一)code#include <bits/stdc++.h>using namespace std;vector<int> pre(30),post(30),in;int ju...

2019-11-27 21:01:16 102

原创 1014 Waiting in Line (30 分)

解题思路先让n×mn\times mn×m个数进入分界线内,但要判断一下人数,有k<n×mk<n\times mk<n×m 和 k>=n×mk>=n\times mk>=n×m 两种情况结构体存入三个数据:队首出队时间最后结束时间一个队列这样处理的话,后面就可以通过遍历找到每个窗口的队首处理时间,找到最小值,一个一个插入到对应的窗口中。注意...

2019-11-27 16:50:09 102

原创 1080 Graduate Admission (30 分)

解题思路题目条件第一条:先排序按成绩大小题目条件第二条:按照指定的规则排序,总分相同比GE,GE相同排名相同题目条件第三条:按照学生的排名进行录取,如果该学校满了,则跳去学生的第二志愿,依此下去题目条件第四条:排名相同的且志愿相同的同时录取(可以记录每个学校的靠后的排名,如果后面排名相同就进行补录)用set可以进行升序,记录学生数code#include <bits/std...

2019-11-26 19:33:19 70

原创 1095 Cars on Campus (30 分)

解题思路首先得找出in和out都匹配的车辆,不然在后面找有多少辆车在里面且pair是很麻烦的先按车牌相同的筛选出来pair的停车和离开的时间将其保存在car数组里面,并将car排序通过car数组可以知道在当前车之前有多少辆车在里面,in记为1,out记为-1比较该车与条件时间,可以知道车辆数code#include <bits/stdc++.h>using nam...

2019-11-26 16:54:15 100

原创 1016 Phone Bills (25 分)

题意不能直接输出姓名,因为如果你的账单不符合,你的名字是不会被打印出来的。排序题code#include <bits/stdc++.h>using namespace std;struct node{ string name; int month,day,hh,mm,status; int last;};int p[25];bool cmp...

2019-11-26 14:21:32 122

原创 80./ 26. 删除排序数组中的重复项 I&II(双指针,STL删除)

I解题思路分析:固定两个指针,一个为慢指针,一个为快指针。快指针: 用来扫描整个数组慢指针:用来固定当前的位置算法:当nums[sp]==nums[fp]nums[sp]==nums[fp]nums[sp]==nums[fp]说明有重复情况,那么在区间(sp,fp)(sp,fp)(sp,fp)范围内的数应该舍去,只需让fp++fp++fp++即可当nums[sp]!=nums[fp...

2019-11-24 19:03:41 78

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除