c||c++
ypw44
成为自己最想成为的人~
展开
-
73. 矩阵置零(标记法)
73. 矩阵置零(标记法)原创 2022-06-11 13:03:33 · 226 阅读 · 0 评论 -
118. 杨辉三角(动态规划)
118. 杨辉三角(动态规划)原创 2022-06-10 12:39:44 · 110 阅读 · 0 评论 -
566. 重塑矩阵
566. 重塑矩阵原创 2022-06-10 10:53:54 · 89 阅读 · 0 评论 -
1873. 计算特殊奖金-sql语句之UNION(联合查询)的用法
1873. 计算特殊奖金-sql语句之UNION(联合查询)的用法原创 2022-06-09 17:23:26 · 255 阅读 · 0 评论 -
121. 买卖股票的最佳时机(动态规划)
121. 买卖股票的最佳时机(动态规划)原创 2022-06-09 11:46:51 · 241 阅读 · 0 评论 -
350. 两个数组的交集 II(LeetCode)
两个数组的交集 II(LeetCode)原创 2022-06-09 11:25:59 · 93 阅读 · 0 评论 -
88. 合并两个有序数组
合并两个有序数组原创 2022-06-08 12:37:48 · 92 阅读 · 0 评论 -
1. 两数之和(LeetCode)
1. 两数之和(LeetCode) C++详细题解原创 2022-06-08 10:48:24 · 71 阅读 · 0 评论 -
PAT (Basic Level) Practice (中文)-- 1026 程序运行时间 (15 分)
题目:要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间。这个时间单位是 clock tick,即“时钟打点”。同时还有一个常数 CLK_TCK,给出了机器时钟每秒所走的时钟打点数。于是为了获得一个函数 f 的运行时间,我们只要在调用 f 之前先调用 clock(),获得一个时钟打点数 C1;在 f 执行完成后再调用 clock(),获得另一个时钟打点数 C2;两次获得的时钟打点数之差原创 2022-03-04 15:58:42 · 85 阅读 · 0 评论 -
PAT (Basic Level) Practice (中文)- 1025 反转链表 (25 分)
题目给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转。例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→4;如果 K 为 4,则输出应该为 4→3→2→1→5→6,即最后不到 K 个元素不反转。输入格式:每个输入包含 1 个测试用例。每个测试用例第 1 行给出第 1 个结点的地址、结点总个数正整数 N (≤10^5 )、以及正整数 K (≤N),即要求反转的子链结点的个数。结点的地址是 5 位非负整数,NULL 地址用 −1 表示。原创 2022-02-27 19:31:59 · 108 阅读 · 0 评论 -
PAT (Basic Level) Practice (中文)- 1023 组个最小数 (20 分)
给定数字 0-9 各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意 0 不能做首位)。例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558。现给定数字,请编写程序输出能够组成的最小的数。输入格式:输入在一行中给出 10 个非负整数,顺序表示我们拥有数字 0、数字 1、……数字 9 的个数。整数间用一个空格分隔。10 个数字的总个数不超过 50,且至少拥有 1 个非 0 的数字。输出格式:在一行中输出能够组成的最小的数原创 2022-02-07 19:07:54 · 5142 阅读 · 0 评论 -
PAT (Basic Level) Practice (中文)- 1021 个位数统计 (15 分)
1021 个位数统计输入格式:每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。输出格式:对 N 中每一种不同的个位数字,以 D:M 的格式在一行中输出该位数字 D 及其在 N 中出现的次数 M。要求按 D 的升序输出。输入样例:100311输出样例:0:21:33:1思路:用string进行读入,然后遍历字符串,用map<int,int>进行存贮每个字符有多少个。输出即可(map会根据first的值自动排序)。code:#include<b原创 2022-02-07 18:30:15 · 184 阅读 · 0 评论 -
PAT (Basic Level) Practice (中文)-1020 月饼 (25 分)
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10 万吨,总售价分别为 75、72、45 亿元。如果市场的最大需求量只有 20 万吨,那么我们最大收益策略应该是卖出全部 15 万吨第 2 种月饼、以及 5 万吨第 3 种月饼,获得 72 + 45/2 = 94.5(亿元)。输入格式原创 2022-02-07 18:22:25 · 223 阅读 · 0 评论 -
PAT (Basic Level) Practice (中文)--1019 数字黑洞 (20 分)
1019 数字黑洞 (20 分)给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。例如,我们从6767开始,将得到7766 - 6677 = 10899810 - 0189 = 96219621 - 1269 = 83528532 - 2358 = 61747641 - 1467 =原创 2022-01-21 22:05:39 · 98 阅读 · 0 评论 -
PAT (Basic Level) Practice (中文)---1018 锤子剪刀布 (20 分)
输入格式:输入第 1 行给出正整数 N(≤10 ^5 ),即双方交锋的次数。随后 N 行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C 代表“锤子”、J 代表“剪刀”、B 代表“布”,第 1 个字母代表甲方,第 2 个代表乙方,中间有 1 个空格。输出格式:输出第 1、2 行分别给出甲、乙的胜、平、负次数,数字间以 1 个空格分隔。第 3 行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有 1 个空格。如果解不唯一,则输出按字母序最小的解。思路:一个简单的模拟,遍历记输赢次数即可。原创 2022-01-21 18:03:34 · 479 阅读 · 0 评论 -
PAT (Basic Level) Practice-1016 部分A+B
思路:用字符串去处理最简单。注意边界int会炸。code:#include<bits/stdc++.h>using namespace std;typedef long long ll;ll tot;int solve(string ss,int n,int l){ tot=0; for(int i=0;i<l;i++){ if((ss[i]-'0') == n){ tot += n; tot*=10; } } return tot/10;}.原创 2022-01-18 14:12:42 · 317 阅读 · 0 评论 -
PAT (Basic Level) Practice-1015 德才论 (25 分)
输入格式:输入第一行给出 3 个正整数,分别为:N(≤105),即考生总数;L(≥60),为录取最低分数线,即德分和才分均不低于 L 的考生才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序;才分不到但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;德才分均低于 H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;其他达到最低线 L 的考生也按总分排序原创 2022-01-18 13:56:33 · 259 阅读 · 0 评论 -
C++实现通讯录管理系统(源码)
C++实现通讯录管理系统实现思路:1.基于打印的一个界面供用户选择。*********通讯录管理系统*************** 1.添加联系人 ************ 2.显示联系人 ************ 3.删除联系人 ************ 4.查找联系人 ************ 5.修改联系人 ************ 6.清空联系人原创 2022-01-13 18:08:55 · 894 阅读 · 0 评论 -
617. 合并二叉树(经典递归)
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。思路:根据递归的思路1.设置出口2.操作3.调用自身那么我们可知,当当前节点t1为空,那么合并就是t2.当当前节点t2为空,那么合并就是t1.否则就执行操作,使得t1的值+t2的值(因为我们最终要返回t1作为新的合并的树)然后就调用自身,合并的左子原创 2022-01-12 19:06:11 · 66 阅读 · 0 评论 -
695. 岛屿的最大面积(经典DFS)
给你一个大小为 m x n 的二进制矩阵 grid 。岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。岛屿的面积是岛上值为 1 的单元格的数目。计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。思路:见代码class Solution {public: int ans = 0;//输出答案 int n,m; int su原创 2022-01-12 17:14:57 · 115 阅读 · 0 评论 -
977. 有序数组的平方(O(N))
题意:给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。思路:拿到题目我们最直接的思路是先遍历一遍平方,然后在排序,当然可以解决问题,复杂度为O(NlogN);我们这里主要介绍一种O(N)的算法,因为原序列是有有序的,那么平方以后的最大值只会出现在两端,所以我们可以采用双指针的方法,从两头开始比较,看哪端大。假设右端平方大于左端,则确定一个最大值,然后右端指针往左移。若左端平方大于右端,则也确定一个最大值,然后左端指针往右移。如此原创 2022-01-05 10:52:53 · 488 阅读 · 0 评论 -
问题 B: 出租车费(详细讲解)
题目:某市出租车计价规则如下:起步4公里10元,即使你的行程没超过4公里;接下来的4公里,每公里2元;之后每公里2.4元。行程的最后一段即使不到1公里,也当作1公里计费。一个乘客可以根据行程公里数合理安排坐车方式来使自己的打车费最小。例如,整个行程为16公里,乘客应该将行程分成长度相同的两部分,每部分花费18元,总共花费36元。如果坐出租车一次走完全程要花费37.2元。现在给你整个行程的公里数,请你计算坐出租车的最小花费。**输出:**输入包含多组测试数据。每组输入一个正整数n(n<1000原创 2021-06-28 20:29:39 · 913 阅读 · 0 评论 -
问题 C: 神奇的口袋(背包问题---递归 || 二进制枚举)
题目描述有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。输入输入的第一行是正整数n (1 <= n <= 20),表示不同的物品的数目。接下来的n行,每行有一个1到40之间的正整数,分别给出a1,a2……an的原创 2021-06-19 13:23:49 · 373 阅读 · 0 评论 -
问题 B: 数列
题目描述编写一个求斐波那契数列的递归函数,输入n 值,使用该递归函数,输出如下图形(参见样例)。输入输入第一行为样例数m,接下来有m行每行一个整数n,n不超过10。输出对应每个样例输出要求的图形(参见样例格式)。输入:16输出: 0 0 1 1 0 1 1 2 3 0 1 1 2 3 5 8 0 1 1 2 3 5 8 13 210 1 1 2 3 5 8 13 21 34 55思路:金典斐波那契数列,主要是输出格式。对于原创 2021-06-19 12:55:16 · 170 阅读 · 0 评论 -
插入排序算法详细剖析
插入排序分为:直接插入排序,折半插入排序,希尔排序。这里我们主要分析最简单的:直接插入排序自如其意,插入排序,就是每次读入一个元素的时候,在已经有序的序列中找到他应该插入的位置,然后插入保证当前序列还是有序,如此只能所有的元素都插入完毕。int a[maxn],n;void insertSort(){ for(int i=2;i<=n;i++){ int temp = a[i],j = i; whlie(j>1 && temp原创 2021-06-14 18:31:10 · 228 阅读 · 0 评论 -
选择排序算法详细剖析
选择排序的基本思想是:每一趟(比如说第i趟)在后面n-i+1个待排序元素中选取关键字最小的元素,作为有序子序列的第i个元素,直到第n-1趟做完,待排序元素只剩下一个,就停止我们这里还拿从小到大排序来讲解。void selectSort(){ for(int i=1;i<=n;i++){ int k = i; for(int j=i;j<=n;j++){ if(a[i] < a[k]){原创 2021-06-14 18:20:48 · 124 阅读 · 0 评论 -
冒泡排序算法详细剖析
首先我们要知道一个前提知识 ,冒泡排序 属于 交换排序 的一种。那么什么是交换排序?答:根据序列中两个关键字的大小的比较结果来决定是否交换这两个记录在序列中的位置。冒泡排序的思想:1.当我们拿到一个混乱无序的序列的时候,我们可以从前往后依次两两比较相邻元素的值。这里我们假定想要序列从小到大排列。那么每次对比 a[i-1] 与 a[i],若a[i-1] > a[i] 。那么我们就交换这两个元素的位置。原序列:2 5 4 3 1对比 2 < 5 不做处理对比 5 > 4 交换,原创 2021-06-14 12:06:32 · 224 阅读 · 0 评论 -
《数据结构高分算法笔记》3.6小节——入门模拟->字符串处理
1. A.字符串连接2. 首字母大写4. 字符串的查找删除5. 单词替换6. 字符串去特定字符7. 数组逆置8. 比较字符串9. 编排字符串10. 【字符串】回文串A#include<bits/stdc++.h> using namespace std; int main(){ string s1,s2; while(cin>>s1>>s2){ cout<<s1<<s2<<en原创 2021-06-13 17:11:08 · 111 阅读 · 1 评论 -
字符串内容的替换
字符串string类有成员函数replace()string str;string s1;str.replace(pos,len,s1);//使用s1的长度为len,从str的pos位置开始替换str.replace(pos,len,s1,pos1,len1);//使用s1的子串从pos1开始长度为len1。替换str中从pos开始长度为len的长度...原创 2021-06-11 21:27:37 · 444 阅读 · 0 评论 -
问题 C: 字符串的查找删除(字符串好题)
题目描述:给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。输入输入只有1组数据。输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。输出删除输入的短字符串(不区分大小写)并去掉空格,输出。//样例//输入in#include int main(){printf(" Hi ");}//输出#cludetma(){prtf("Hi");}思路:根据题意,不区分大小写,即有 在主串中删除 in, In ,IN,iN,原创 2021-06-11 20:56:11 · 508 阅读 · 0 评论 -
十进制大整数转化为二进制输出
相信一般整数的进制转换大家都会,那么大整数数转换为二进制怎么去做呢?根本存不下,只能用字符串来表示。其实只要我们理解了十进制整数转化为二进制的方法,那么相对大数来讲,思路还是一样的。#include <stdio.h>#include <string.h>int main(){ char m[32]; int len; while(scanf("%s",&m)!=EOF){ len=strlen(m); int sum=1,size=0; char原创 2021-06-10 18:02:09 · 973 阅读 · 1 评论 -
数制转换(一个任意进制的数转换为另一个进制的数)
题目描述:求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。不同进制的表示符号为(0,1,…,9,a,b,…,f)或者(0,1,…,9,A,B,…,F)。输入:输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。输出:可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1原创 2021-06-10 16:49:11 · 1104 阅读 · 0 评论 -
1010 一元多项式求导 (25 分)(全网最详细讲解!避坑)
思路:简单说下这个题目,体面解释并不清晰;要注意:1.当第一组系数和指数,指数就为0时,那么这时候需要直接输出“0 0”,然后return2.当指数为0的组数在输入的多组数据之间的时候,需要不输出。不做任何输出。3.在2的基础上,如果一组样例后几组为指数为0的,那么这个时候我们要控制格式输出使得最后一组输出的没有空格!所以我们要实现找到有效输出的最后一组输出的样例。我们不知道每个测试点的组数是多少,所以我们第一思路直接去做的话,每次输出一组会导致格式错误,尽管题目本身并不难。那么我们仔细审题,.原创 2021-05-28 14:21:10 · 1143 阅读 · 2 评论 -
有关内联函数的解读
Inline内联函数我们要知道每一次函数调用都会带来一些时间和空间上的花销。那么如果一个代码本身就不多,又频繁被调用的函数,就很烦!要是就写吧,得在代码块中写好多次,不写就调用时间花销又大。好在,C++已经帮我们考虑了这个问题,为我们提供了内联的机制。所谓内联的机制,就是仍然使用自定义函数,但是在编译的时候,把函数代码插入到函数调用处,从而免去函数调用的一系列过程,就像普通顺序执行的代码一样。使用方法超级简单:只需要在函数定义的前面加上inline就行了。参考传送门...原创 2021-05-09 14:43:18 · 101 阅读 · 0 评论 -
有关函数模板的解读
我们前面学习了函数重载,可以处理多种数据类型,虽然是同一个名字,但是仍然要分开定义。那么,C++提供函数模板这一机制,大大提高代码的可重用性。函数模板: 是一个可以创建一个通用的函数,可以支持多种形参。用关键字template来定义,形式如下:template<class 类型名1,class 类型名2...>//声明语句返回值 函数名(形参列表) 模板参数表{ 函数体}我们可以运行一下代码示例来体会,就是不用写多个函数了,直接模板函数中的T1,T2类型将根据实际传入的类原创 2021-05-09 14:34:26 · 84 阅读 · 0 评论 -
有关C++函数重载的解读
在实际的代码编写过程中,有时候对同一个功能的函数,可能处理的对象类型不同,则需要重新实现一遍这个函数。C++为了解决这一问题,支持用函数重载来解决这个问题。函数重载: 即两个或两个以上的函数,函数名相同,但是形参类型或个数不同,编译器会根据调用方传入的参数的类型和个数,自动选择最合适的一个函数来进行绑定调用,自动实现选择。#include<iostream>using namespace std;int add(int a,int b){ cout<<"(int ,原创 2021-05-09 14:21:50 · 112 阅读 · 0 评论 -
带默认形参值的函数
在C++中,允许在自定义函数的形参列表中,给形参一个默认的值,这样子在调用的时候如果有实参,那么按照实参传递给形参的方法调用;没有指定对应的实参,那么形参将使用默认值。#include<iostream>using namespace std;int add(int a=3,int b=5){ return a+b;}int main(){ cout<<add(10,20)<<endl;//将10和20分别给a和b cout<&原创 2021-05-09 14:14:34 · 779 阅读 · 0 评论 -
有关C++类的解读
相信大家都了解C语言中的结构体我们写一段示例代码如下:在这段代码中,我们定义了一个struct stu的结构体类型,里面有五个成员变量。struct stu{ int num; char sex; int math_score; int en_score; int c_score; };int main(){ struct stu A; return 0;}而C++的类也相似,只不过比C的结构体高级了一些。不叫结构体了。叫类。并原创 2021-05-09 14:02:07 · 112 阅读 · 0 评论 -
1482. 制作 m 束花所需的最少天数(经典二分+验证答案)
题意:给你一个整数数组 bloomDay,以及两个整数 m 和 k 。现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回 -1 。思路:对于不能满足的情况无非是 bloomDay.size() < m * k;我们很容易得到天数无非是在 bloomDay 元素中的最小值与最大值之间。那么我们自原创 2021-05-09 13:39:58 · 166 阅读 · 0 评论 -
东华大学2020年程序设计竞赛(同步赛) 题解
A Shooting Game思路 : 排序签到题#include<bits/stdc++.h>#define inf 0x3f3f3f3fusing namespace std;struct node{ int k; int w; int r; int b; int tot;}a[1000];int main(){ int n; cin>>n; int ans = -inf; int flag;原创 2021-05-08 10:53:05 · 231 阅读 · 0 评论