
基础学习
dpter
终有一日,繁花似锦。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
《剑指Offer》--JZ7 斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1。C++class Solution {public: int Fibonacci(int n) { if(n == 0) return 0; else if( n==1 || n == 2) return 1; else return Fibonacci(n-1) + Fibonacci(n-2); }};这样递归原创 2021-06-30 22:14:51 · 162 阅读 · 0 评论 -
1009 说反话(20 分)
1009 说反话(20 分)给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的...原创 2018-09-02 18:54:20 · 143 阅读 · 0 评论 -
1002 写出这个数(20 分)
1002 写出这个数(20 分)读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100 。输出格式:在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。输入样例...原创 2018-09-01 16:25:49 · 110 阅读 · 0 评论 -
1001 害死人不偿命的(3n+1)猜想(15 分)
1001 害死人不偿命的(3n+1)猜想(15 分)卡拉兹(Callatz)猜想:对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似...原创 2018-09-01 16:24:46 · 107 阅读 · 0 评论 -
1039_到底买不买
1039 到底买不买(20 分)小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来...原创 2018-09-02 19:03:07 · 128 阅读 · 0 评论 -
素数判断问题
素数判断判断素数还是很简单的,两种写法12345678bool isPrime(int n){ if(n<=1) return false; int sqr = (int)sqrt(1.0 * n);//因为sqrt是浮点型开根号. for(int i = 2;i<=sqr;i++){ if(n...原创 2018-08-31 09:52:46 · 318 阅读 · 0 评论 -
全排列递归算法
全排列全排列指1~n个整数按照某个顺序得出的结果就是一个排列,而全排列则是所有可能的顺序排列出来得到的结果.例如,对1 2 3这 三个数字可以得出的排列有123,132,213,231,312,321这六种.字典序就不解释了吧,我这个排序就是字典序,简单说就是从小到大.递归实现全排列实现全排列有好几种方法,今天下午看了哈希表和递归,...原创 2018-08-30 18:30:50 · 135 阅读 · 0 评论 -
插入排序代码
看了一会插入排序,以为看懂了,以为很简单,但是用代码实现的时候还是暴露了好多问题.对于需要排序的数组,第一个位置是不要存放你要排序的数字的,你可以放些其他的,反正这个不排序.还有,就是在函数实现的时候,传值不是传数组 大小的个数呀,是传你待排序的数字的实际个数,也就是说,数组长度为10,a[0]的位置不放待排序元素,在a[1]~a[...原创 2018-08-27 21:15:17 · 111 阅读 · 0 评论 -
find函数
对于string来说,find函数很好用当然,不能忘记#include.简单介绍一下find的使用,我将它称之为”字符串匹配函数”,其实看函数名字就可以猜出来,主要查找用.给你一个字串,可以找到在一个串中这个字串出现的位置.当然,这个字串可以只有一个字母,也就是说可以是字符,所以这个函数为我们寻找字符也提供了遍历.如果给的字符...原创 2018-08-27 20:45:48 · 163 阅读 · 0 评论 -
对称矩阵压缩存储
看王道的书讲到对称矩阵压缩存储,一直觉得应该是二维数组,结果竟然是一维数组,有点晕,最后查资料终于搞懂了。资料来源:https://blog.youkuaiyun.com/persistence_s/article/details/70272896对于下图这样的对称矩阵,重复的部分只存储一次就可以了。那为什么是一维数组呢???看到这个图,...原创 2018-08-21 20:41:03 · 484 阅读 · 0 评论 -
从尾到头反向输出带头结点单链表每个结点的值(就地逆置)
“就地”的意思是辅助空间复杂度为O(1);这个比较简单,最简单的思路就是拿下头结点,剩下的结点头插法插进去,因为头插法插入之后顺序就是逆序了。王道上还提供了一种解法,是遍历链表,然后把指针反转。我看看把两个代码都实现一下试试。123456789101112131415161718192021...原创 2018-08-20 20:37:01 · 2457 阅读 · 0 评论 -
递归删除单链表中值为x的结点(两种方法)
这个是引用方式,链表分带头结点与不带头结点,但是都可以用12#include<iostream>using namespace std;//定义结点结构体1234typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;...原创 2018-08-20 20:28:43 · 2813 阅读 · 3 评论 -
链表的创建
一直想着啥时候总结一下链表的问题,天天不知道在忙些什么。。。整理了一下带头结点与不带头结点的链表的创建。如下:12#include<iostream>using namespace std;//链表节点1234struct node{ int data; node* next;}Lnode;//...原创 2018-08-19 19:07:53 · 100 阅读 · 0 评论 -
中位数算法
王道数据结构p18 011说实话我感觉这个算法有点复杂,但是不知道更简单的算法.12345678910111213141516171819202122232425262728293031#include<iostream>using namespace std...原创 2018-08-12 20:01:14 · 454 阅读 · 0 评论 -
元素逆置,折半查找
王道数据结构P18 008 009//—元素逆置12345678910111213#include<iostream>using namespace std; void reverse(int *l,int left,int right,int &a1){ if (left &g...原创 2018-08-11 20:03:10 · 119 阅读 · 0 评论 -
数组作为函数参数
做题遇到一个数组传参,发现了一些小问题。1.对于数组长度来说,用sizeof(数组名)求出来的并不是数组的大小,确切的说,不是我要的大小,他是求出了数组所占空间的大小。int a[5] = { 1, 3, 5, 7, 9 };int n = sizeof(a);这样算出来的n不是想象中的数组长度5,我得出的结果是20,因为一个元...原创 2018-08-10 20:21:24 · 148 阅读 · 0 评论 -
有序表合并,删除给定值区间,删除重复值
王道数据结构代码实现//删除数组中处于x,y中间的数,包含x, y ,x<y123456789101112131415#include<iostream>using namespace std;bool del_st(int *a, int &n,int x, int y...原创 2018-08-10 20:05:31 · 169 阅读 · 0 评论 -
atoi()和stoi()的区别----数字字符串的处理
ATOI()和STOI()的区别—-数字字符串的处理相同点:①都是C++的字符处理函数,把数字字符串转换成int输出②头文件都是#include不同点:①atoi()的参数是 const char ,因此对于一个字符串str我们必须调用 c_str()的方法把这个string转换成 const char类型的,而stoi()的参数是c...原创 2018-08-07 20:23:41 · 239 阅读 · 0 评论 -
substr函数
C++中的SUBSTR函数简单记录一下substr函数。123456789#include<string>#include<iostream>using namespace std;int main(){ string s("cfdsmcfv"); string...原创 2018-08-07 19:00:23 · 373 阅读 · 0 评论 -
带头结点单链表递增有序
怎么说呢,思路很简单很简单,先把头结点拆出来,后边的结点继续遍历,向头结点中插入,只不过插入的时候有了一点条件而已(需要有序),但是!!感觉一点也不简单呢,指针一直变,还是有点混乱的。慢慢熟悉一下加入循环嵌套的这种遍历怎么写,毕竟这个比较基础,大不了,背下来吗~~哈哈。不说了,上代码:1234567891011...原创 2018-08-20 20:39:06 · 1096 阅读 · 0 评论 -
1020 Tree Traversals (25分)
Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level order traversal sequence of the cor...原创 2020-04-04 14:30:06 · 137 阅读 · 0 评论 -
后序中序求前序
已知后序与中序输出前序(先序):后序:3, 4, 2, 6, 5, 1(左右根)中序:3, 2, 4, 1, 6, 5(左根右)分析:因为后序的最后一个总是根结点,令i在中序中找到该根结点,则i把中序分为两部分,左边是左子树,右边是右子树。因为是输出先序(根左右),所以先打印出当前根结点,然后打印左子树,再打印右子树。左子树在后序中的根结点为root – (end – i + 1),即为当前根结点...原创 2020-04-04 14:08:04 · 3300 阅读 · 0 评论 -
algorithm下的几个函数
fill()fill()可以把数组或者容器中的一段区间赋值为某个相同的值,和memset不同,这里的赋值可以使数组类型对应范围中的任意值。PS:终于不用循环遍历赋值了~~int a[5] = {1,23,3,4,5};fill(a,a+5,233)//将a[0]到a[4]全部赋值为233next_permutation()next_permutation()给出一个序列在全排列...原创 2020-03-26 21:26:38 · 224 阅读 · 0 评论 -
pair的常见用法
pair实际上可以看做一个内部有两个元素的结构体,且这两个元素的类型是可以指定的。struct pair{ typeName1 first; typeName2 second;};要是用pair就要添加头文件#include<utility> 还需要using namespace std;不过map的内部实现涉及到pair,所以如果导入map可以不用导入ut...原创 2020-03-26 21:05:41 · 540 阅读 · 0 评论 -
queue、priority_queue与stack简单使用
queue是队列#include<iostream>#include<queue>using namespace std;int main(){ queue<int> q; for(int i = 1;i<=5;i++){ q.push(i);//push(i)来将i压进队列,因此依次入队1,2,3,4,5 } cout<&...原创 2020-03-26 20:44:50 · 195 阅读 · 0 评论 -
map简单使用
刷题遇到好多时候都在使用map,索性今天就整理一下.vector是向量,那map是什么呢?map翻译为映射.比如定义一个数组,int a[10],就是定义了一个int 到 int 的映射.所以,看到局限性了吧,用数组定义,映射关系确定,都是从int类型映射到其他类型,那别的需求怎么办?我想要从string映射到int,用数组是没法实现了,由此,map出现了.map定义map<k...原创 2020-03-24 07:13:27 · 292 阅读 · 0 评论 -
set简单使用
set简单使用set是什么呢??翻译为集合.是一个内存自动有序且不含重复元素的集合.set定义和vector的定义方法一样set<int> s;//其实大部分stl都是这样定义的set<int> s[100];//二维的也是这样定义set元素访问:set只能通过迭代器访问!!!set<int>::iterator it;...原创 2020-03-24 07:09:15 · 228 阅读 · 0 评论 -
vector简单使用
Vector定义其实vector并不难,就是别用混了就行了。vector<int> v; //这是定义一个int型向量vector<int> v(n) //这是定义初始大小为n的向量vector<int> v(n,1) //这是定义初始大小为n,初始值为1的向量vector<vector<int> >v;//这样就嵌...原创 2020-03-24 07:05:37 · 416 阅读 · 0 评论 -
大整数运算--算法笔记
大整数的存储:用数组:整数的高位存在数组的高位 ,低位存在数组的低位。struct bign{ int d[1000]; int len; bign(){ memset(d,0,sizeof(d)); len=0; }};//为了方便获取大整数的长度,定义len变量来记录长度。输入大整数的时候,一般先用字符串读入...原创 2020-03-23 20:14:36 · 188 阅读 · 0 评论 -
1069 The Black Hole of Numbers (20分)
For any 4-digit integer except the ones with all the digits being the same, if we sort the digits in non-increasing order first, and then in non-decreasing order, a new number can be obtained by takin...原创 2020-03-23 15:51:35 · 229 阅读 · 0 评论 -
1093 Count PAT's (25分)
The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and the 6th characters, and the second one is formed by the 3rd, the 4th, and the 6th characters.Now ...原创 2020-03-23 12:31:02 · 141 阅读 · 0 评论 -
快速排序--算法笔记
快速排序:找主元A[0],定义一个临时变量temp,然后使用双指针,先从右指针开始比较,如果比temp(存着主元)大,right左移,如果比主元小,将A[right]写到A[left],然后left开始向右移进行比较,一直这样循环下去,一左一右,直到 left 与 right 相遇// 对区间进行[left,right]划分int Partition(int A[],int le...原创 2020-03-23 09:21:10 · 158 阅读 · 0 评论 -
归并排序--算法笔记
二路归并原理:将序列两两分组,将序列归并为n/2个组,组内单独排序。然后再将这些组两两归并,组内再单独排序。以此类推,直到只剩下一个组为止。递归实现:const int maxn = 100;//将数组A的[L1,R1]与[L2,R2]区间合并为有序区间(此处L2即为R1+1)void merge(int A[],int L1,int R1,int L2,int R2){ ...原创 2020-03-23 08:59:58 · 115 阅读 · 0 评论 -
贪心算法--算法笔记
贪心算法贪心算法:只考虑局部最优解从而使全局结果达到最优解的方法。即中间每步的策略都是最优解,从而使全局达到最有或较优的结果。PAT 1020 月饼 (25分)月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如...原创 2020-03-22 15:39:49 · 231 阅读 · 0 评论 -
散列--算法笔记
散列引例:N={8,3,7,6,2},M ={7,4,2},问这M个数中的每个数是否在N中出现过。M,N最直观的思路就是就是遍历,时间复杂度O(MN),当M和N都很大的时候,是无法承受的。解法:空间换时间,定义一个bool型数组hashTable[100010],其中hashTable[x]==true表示正整数x在N个正整数中出现过。这样就可以在一开始读入N个正整数的时候就进行预处理。...原创 2020-03-22 14:25:06 · 190 阅读 · 0 评论 -
选择排序--算法笔记
简单选择排序:令i从1到n进行枚举,进行n趟操作。[1,i-1]为有序区间,[i-1,n]为无序区间。 每次从无序区间找到最小的元素,与i元素进行交换,这样[1,i]就变成有序区间了,这样一点点加。算法实现:void seleteSort(){ for(int i = 0;i<n;i++){ int k = i; for(int j = ...原创 2020-03-22 10:51:54 · 142 阅读 · 0 评论 -
字符串处理--算法笔记
PAT 1009 说反话 (20分)给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样...原创 2020-03-21 16:57:05 · 196 阅读 · 0 评论 -
进制转换--算法笔记
进制转换步骤:将P进制转换为Q进制,需要分为两步将P进制数转化为十进制数 将十进制转化为Q进制//p进制x转化为10进制的yint y =0,product=1;while(x!=0){ y=y+(x%10)*product;//x%10为了取x的个位数 x=x/10; product=product*p;}//十进制y转化为Q进制zint z[40],num=0;/...原创 2020-03-21 15:31:03 · 275 阅读 · 0 评论 -
图形输出--算法笔记
美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014 年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!输入格式:输入在一行中给出正方形边长 N(3≤N≤20)和组成正方形边的某种字符 C,间隔一个空格。输出格式:输出由给定字符 C 画出的正方形。但是注意到...原创 2020-03-20 22:56:08 · 260 阅读 · 0 评论 -
C:\Java\jdk9\bin\java -javaagent:C:\JetBrains\IntelliJ_IDEA\lib\idea_rt.jar=11805:
C:\Java\jdk9\bin\java -javaagent:C:\JetBrains\IntelliJ_IDEA\lib\idea_rt.jar=11805:C:\JetBrains\IntelliJ_IDEA\bin -Dfile.encoding=UTF-8 -classpath使用idea测试SCanner的时候报错的。这是找不到jre中的rt.jar包问题,也就是jdk没加载...原创 2020-03-20 22:37:21 · 3635 阅读 · 0 评论