- 博客(26)
- 收藏
- 关注
原创 刷题第5天-Lintcode267.最短休息日
题目描述:题目链接题目分析:坐标DP(1)要么休息,要么上班,要么健身,除了休息前一天不能干相同的。(2)开一个数组dp[n][3],分别代表dp[i][0] :代表第i天休息时,此时最少休息的天数dp[i][1]:代表第i天上班时,此时最少休息的天数dp[i][2]:代表第i天健身时,此时最少休息的天数。我的错误点:数组要赋值一个大于情况的初始值,因为有的位置填不了数(由于公司或健身房不开门,此时这个位置就不填数字)(3)给第0天的赋值,dp[0][0] = 1, dp
2021-03-11 16:30:52
271
原创 刷题第四天-Lintcode45.最大子数组差
45.最大子数组差 题目链接分析:(1)子数组的含义:一个数组中连着的数,不能分开(自己做错的重点就在这,我给她整排序了)(2)比较经典的dp问题,但是我给它整排序了。开四个数组lmax[i],lmin[i]代表从左起到i位置的最大值和最小值,rmax[i],rmin[i]代表从又起到i位置的最大值和最小值。(3)先从左遍历,变量max,min,curmax,curmin,走到i时curmax和curmin加上nums[i],再分别跟max和min比较,得到当前的最大值和最小值...
2021-03-10 15:25:48
205
原创 刷题第三天——Lintcode304.最大乘积&187.加油站
三天没写题了,这两个是女神节写的。304.最大乘积题目描述:给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大。题目链接point是nums.size<=500000 -10000 <= nums[i] <= 10000−10000<=nums[i]<=10000题目分析:每次感觉自己想的十分复杂,其实十分easy。(1)给数组从小到大排序(2)找到正数三个最大的相乘,或者两个最小的数和最大的相乘。publi...
2021-03-09 09:28:45
267
原创 刷题第二天-LintCode919&920.会议室
前言:这种题目放在两年前我可以很快的写出来,现在看着它一脸懵逼,连easy的都写不出来,我佛啦,六个月速度刷题!!!知识点:贪心(把大问题分成小问题)题目920(easy):给数个会议的占用时间,问你这几个会议有没有冲突的。题目链接思路:按会议开始时间从小到大排序,判断后面会议开始的时间是不是比前一个会议结束的时间提前,如果是说明gg了。/** * Definition of Interval: * public classs Interval { * int start,
2021-03-04 18:37:08
198
1
原创 刷题第一天-LintCode-312.牛牌
先说些废话,距离我上次写算法题可能有两年了(去年教ap带别人写的那种java题目不算),为了生活开始学习了,冲啊!!!题目链接:https://www.lintcode.com/problem/312题目总结描述:有从1-n种牌,牌最多有四张,现在需要拿出m张牌,问有多少种方案?分析:(1)背包变形,背包容量为m,苹果种类为n种,总共数量为4*n(2)当m > 4*n,说明我要取的牌的数量大于现存牌的数量,此情况不成立。(3)i 从1-n遍历(代表此时牌的类型数量),j从.
2021-03-03 15:10:20
323
1
原创 cf round424 A.Unimodal Array
题目昨天一开始瞎开开E题发现毫无思路然后回到了A题也毫无思路 自己真的好菜啊 还是开始好好学习吧大致题意:判断一个数字是否 先增 再不变 再减增和减可以任意 存在或者不存在思路:顺序定好了 一段一段的通过while循环先判断 增 则i++判断平 则i++判断减 则i++如果顺序有问题 则i无法到n#includeusing namespac
2017-07-14 10:29:07
234
原创 QT——connect的正确写法
connect(ui->bntShow,//sender 发送者 SIGNAL(clicked(bool)),// signal 信号(事件) this,// receiver 接受者 SLOT(OnTest(bool))//slot槽(事件处理函数) );检查是否写对1.检查返回值
2017-07-12 22:39:12
2484
原创 QT——事件处理机制
1.信号和槽机制,是Qt中的事件处理机制2.如何找到一个事件的信号的原型(查Qt的文档)3.如何把一个函数声明为槽使用public slots:或者private slots:修饰注:事件处理函数本身只是一个普通的成员函数如想点show在PlainText里面显示文字则:在头文件里:private slots: int OnShowC
2017-07-12 22:19:17
368
原创 PAT 1025.反转链表
还是学习了小姐姐的方法首先输入的方法是本地址 data值 下一个地址建一个data数组,一个next数组,一个List数组存储方式按本地址存 如:data[此地址],next[此地址]for(int i=0;i<n;i++){ int temp; cin >> temp;//当前地址 cin >> data[temp] >> next[te
2017-06-06 10:58:30
237
原创 PAT 1065.单身狗
题目:输入格式:输入第一行给出一个正整数N(输出格式:首先第一行输出落单客人的总人数;随后第二行按ID递增顺序列出落单的客人。ID间用1个空格分隔,行的首尾不得有多余空格。测试点3:因为五位数字!!!如果输入小于五位数的数字会去掉前面的0再存 所以输出的时候要控制格式 往前补0思路:先配对了 一个标记情侣数组#include#inclu
2017-05-27 18:22:36
468
原创 PAT 1054.求平均值
首先!!!还是看了小姐姐的思路!!因为很多知识点都不知道,只能这样慢慢刷题学习辣~学到了sscanf()和sprintf()第一个sscanf(源字符串,格式,目的变量)是以字符串为输入源,存储到你定义的格式变量里第二个sprintf(目的字符串,格式,源变量)是将格式化的数据写入字符串所以这道题先把输入的a字符串转换为数字再从数字转换为b字符串再判断ab字符串是否
2017-05-25 19:28:28
1236
3
原创 PAT 1035.插入与归并排序
啊之前在大学MOOC上排序的时候课后作业就是这个 一直没写 然后按部就班刷题刷到这里了自己辣鸡的思路:排一趟比较一趟,插入确实可以这样!但是归并在电脑上的实行机制不是想象中的那样的!!!!在电脑上是把左边全部排完再排右边,所以这个方法行不通,所以归并这里需要修改小姐姐的思路:点击打开链接第一:先遍历一遍B数组,找到还未交换的那个数(即前面比后面大的那个数),i赋
2017-05-24 11:10:57
646
原创 PAT 1052.卖个萌
PAT:1052.卖个萌点击打开链接参考了萌萌小姐姐的解法,学到了vector还可以开两层!!!还有substr函数!!!小姐姐的解法参考点击打开链接写是为了加深自己印象,顺便做个学习记录~\(≧▽≦)/~啦啦啦首先:因为输入有空格!!所以要用getline(cin,some),这个昨天的题也用到了,可以读空格等等反正是一行第二:不知道字符串长度所以用s
2017-05-23 11:25:37
1796
原创 PAT 1044.火星数字
思路:使用getline(cin ,some)读取整行文本1.判断是不是数字将字符串的数字转换为数字sum如果sum如果大于13如果sum是13的倍数 则只用输出高位的,个位的0不用输出否则 打印第一位 再打印第二位2.是字符串时4位一循环先判断个位上有没有对应的 把对应数字加上去再判断高位上有没有对应的 把sum +=(对应数字+1)*13
2017-05-22 11:21:57
247
原创 PAT 1040.有几个PAT
思路:从前开始遍历碰到P 则p的个数+1碰到A 则pa的个数 += p的个数碰到T 则pat的个数 += pa的个数#include#includeusing namespace std;int main(){ char s[100005]; cin >> s; int i,j; int p=0,pa=0,pat=0; for(i=0;i<st
2017-05-22 10:44:55
312
原创 PAT 1069.微博转发抽奖
别人博客学习到思路里面用到STL里面的Map是一对一的映射关系,一串字符串可以作为内容去对应#include#include#include#includeusing namespace std;int m,n,s;map msb;vector vs;int main(){ cin >> m >> n >> s; vs.push_back(" ");//vs[
2017-05-16 16:29:41
310
原创 PAT 1055.集体照
看的网上的思路首先结构体的sort排序int cmp(struct People a,struct People b){ return a.height != b.height ? a.height> b.height : a.name < b.name;}按身高从高到低排,按名字从小到大排sort实现原理原始的cmp是return a当a可以自己修改
2017-05-15 10:42:27
304
转载 平衡二叉树,AVL树之图解篇
学习过了二叉查找树,想必大家有遇到一个问题。例如,将一个数组{1,2,3,4}依次插入树的时候,形成了图1的情况。有建立树与没建立树对于数据的增删查改已经没有了任何帮助,反而增添了维护的成本。而只有建立的树如图2,才能够最大地体现二叉树的优点。 在上述的例子中,图2就是一棵平衡二叉树。科学家们提出平衡二叉树,就是为了让树的查找性能
2017-05-13 21:38:46
574
原创 二叉排序树查找操作
当函数返回值为函数结果状态代码时,函数定义为Status类型。递归查找二叉排序树T中是否存在Key指针 f 指向 T 的双亲,其初始调用值为NULL若查找成功,则指针p指向该数据元素结点,并返回TRUE#includetypedef struct BiTNode{ int data; struct BiTNode *lchild, *rchild;}BiTNode,*
2017-05-09 20:27:32
1371
原创 PAT.1048 数字加密
1.当B的长度大于A时,直接将B前面的复制过去2.当A的长度大于B时,B前面要补0,并且要判断奇数位偶数位3.当A为10000,B为1时,要判断为0时应该打印0,最后打印10001,之前没判断直接A的那位数变负数再加10,所以会出问题#include#include#includeusing namespace std;int main(){ cha
2017-05-08 18:10:24
382
原创 顺序表查找——插值查找(比值查找)
原始:mid = low + 1/2(high-low)新的:mid = low + (key-a[low]) / (a[high]-a[low]) * (high-low); //数组下标从1-n开始存#include#includeusing namespace std;int Binary_Search(int *a, int n, int key){
2017-05-08 11:30:56
368
原创 有序表查找——折半查找
折半查找也称(二分查找)前提:线性表中的记录必须是关键码有序(通常从小到大),线性表必须采用顺序存储。思想:取中间记录作为比较对象 , 若给定值与中间记录的关键字相等,则成功;若小于,则在中间记录的左半区继续查找;若大于,在右半区查找。不断重复,直到成功,若无记录,查找失败。//数组下标从1-n开始存#include#includeusing namesp
2017-05-08 11:01:03
3417
原创 顺序表查找课后作业
#include#include #includeusing namespace std;struct student{ int num; string name; int grade;};int main(){ struct student stu[10]; int i ; for(i=1;i<=4;i++) { cin >> stu[i].num >> st
2017-05-07 21:54:31
259
原创 数据结构第六章-二叉树顺序存储变链式存储
给你一个顺序存储的,按照它新建一个链式存储的数#include#include#includeusing namespace std;int a[100];int n;typedef struct Node{ int data; struct Node *lchild; struct Node *rchild;}BiTNode, *BiTree;void Cr
2017-05-07 18:32:34
1618
原创 归并排序
归并的思想:归:就跟分树一样,每次对半分,直到分到1位置并:从下往上合并,从传入的数组中间分开,左边/右边已经排序好了,此时都从最先结点开始一个一个比大小再合并要新建一个临时数组先排序到临时数组再复制回原数组 #include#includevoid mergearray(int a[], int first, int mid, int last, int
2017-05-07 18:27:16
210
原创 PAT 1049.数列的片段和
求所有连续字段的和,网上说实际上求每个数出现的次数每个数的出现次数为(n-i)*(i+1)#include#includeusing namespace std; int main(){ int n,i; double sum = 0,a[100000]; cin >> n; for(i=0;i<n;i++) { cin >> a[i]; }
2017-05-07 18:17:28
249
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人