
C/C++
J_aSON_
这个作者很懒,什么都没留下…
展开
-
读取扩展先序序列,输出为先序列,中序序列,后序序列
题目:读取扩展先序序列,把它输出成先序序列,中序序列,后序序列,其中先序序列和中序序列用递归方法实现,后序是非递归实现//先写一个用来读取扩展先序序列的函数,再写三个输出函数#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100005/* 二叉链表结点 */typedef struct Node { char data; /* 二叉链表的结点信息 */ struct No原创 2020-11-08 14:27:48 · 721 阅读 · 0 评论 -
31. 下一个排列 leetcode算法题c语言解法
代码:void swap(int *a,int*b){ int t =*a; *a = *b; *b = t;}void nextPermutation(int *nums,int numsSize){ if (numsSize == 0) { return; } int i,j;// 从后往前找到第一个后面比前面大的数 for (i = numsSize - 2; i>=0 && nu.原创 2020-11-01 20:45:48 · 212 阅读 · 0 评论 -
9.2二叉树的遍历
9.2二叉树的遍历二叉树的遍历是指通过一定顺序访问二叉树的所有节点。遍历方法一般有4种:先序遍历,中序遍历,后序遍历及层次遍历,其中,前3种一般使用深度优先搜索(DFS)实现,而层次遍历一般使用广度优先搜索实现(BFS)。先来看前3种遍历方法。前面给出过二叉树的递归定义,这种定义方式将在这里很好的和遍历方法融合在一起。把一棵二叉树分为3个部分:根节点、左子树、右子树,且对左子树和右子树同样进行这样的划分,这样对树的遍历就可以分解为对这3个部分的遍历。读者首先要记住一点,无论是这3种遍历的哪一种,左子树一原创 2020-08-19 13:17:26 · 224 阅读 · 0 评论 -
算法笔记codeup 1918 简易计算器详解(用c++栈实现计算器)
codeup 1918 简易计算器题目描述读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。输入测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。输出对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。样例输入:30 / 90 - 26 + 97 - 5 - 6 - 13 / 88 * 6 + 51 / 29 + 79 * 87 + 57 *原创 2020-08-12 17:41:12 · 697 阅读 · 0 评论 -
stack栈的常见用法详解
1.stack的定义。stack是一种先进后出的容器,要使用stack,应该先添加头文件#include,并在头文件限免加上using namespace std; 其定义的写法和其他STL容器一样,typename可以是任何基本数据类型或容器stack< typename > name;2.stack容器内元素的访问由于stack是一种先进后出的数据结构,在STL中的stack中只能通过top()来访问栈顶元素#include <stdio.h>#include&原创 2020-08-11 10:15:04 · 613 阅读 · 1 评论 -
4.6.2归并排序及其两种实现方式(详解)
4.6.2归并排序及其两种实现方式(详解)原理:将序列两两分组,将序列归并为[n/2]个组,组内单独排序;排序后,将这些组再两两归并,生成[n/4]个组,组内单独排序,以此类推;直到只剩下一个组。时间复杂度为O(nlogn).例子:{66,12,33,57,64,27,18}先分成{66,12},{33,57},{64,27},{18},对它进行排序{12,66},{33,57},{27,64},{18},接着合并 并 排序{12,33,57,66},{18,27,64}最后把这两个也合并了原创 2020-08-04 13:09:18 · 403 阅读 · 0 评论 -
双指针法详细讲解(例一:给定一个递增序列和一个正整数。例二:序列合并问题)
4.6.1什么是双指针?双指针是一个编程技巧。由于是一个编程技巧,所以更适合结合着题练习。例 一:给定一个递增的正整数序列和一个正整数M,求序列的两个不同位置的数 a 和 数 b,使得它们的和恰好为M,输出所有的满足的方案。例如给定序列{1,2,3,4,5,6}和 正整数M=8,就存在 2+ 6= 8 和 3+5=8.本题的一个很直观的想法是双重for循环,这里不多赘述。这种做法的时间复杂度为O(n^2),对于n在 10^5的规模是不可承受的。我们来看看这种做法的复杂度高的原因:1.对于一个确定原创 2020-07-31 16:44:45 · 1162 阅读 · 1 评论 -
二分法基本题型--寻找有序序列中第一个满足某条件的元素的位置
a[]为递增序列,x为欲查询得数,函数返回第一个大于x得元素的位置二分上下界为左闭右闭的【left,right】,传入的初值为【0,n】(取n是因为可能数列中所有数都比x小)int upper_bound(int a[], int left, int right, int x){ int mid;//mid为中点 while(left < right) { mid = left + (right - left)/2; if(a[mid]原创 2020-07-25 23:36:33 · 497 阅读 · 0 评论 -
LeetCode剑指offer 53 0~n-1中缺失的数(二分法和特征法)
题目:这个题我是用二分法写的:下面是代码,这个就是一个正常的二分过程,只不过,最后的值由left给出,这点通过模拟几次例子就可以得到:当left>right时,那个left就是缺失的数。这个思路题解里面也有一位大佬给出了,看到他的解释,我才明白,这个题又是一类二分法的基础题型。我把他的题解附在这里。法一复杂度分析:时间复杂度 O(log N)O(logN): 二分法为对数级别复杂度。空间复杂度 O(1)O(1): 几个变量使用常数大小的额外空间。int missingNumber(原创 2020-07-25 16:56:48 · 150 阅读 · 0 评论 -
二分查找---如何在一个严格递增的序列A中找到给定的数x
二分查找—如何在一个严格递增的序列A中找到给定的数x(两种差不多的代码)二分法好多这种这种题,是基础中的基础,要掌握好。第一个是标答:#include <stdio.h>int binarySearch(int a[],int left,int right,int x);int main(void) { const int n = 10; int A[n] = {1,3, 4, 6, 7, 8, 10, 11, 12, 15}; printf("%d\n",原创 2020-07-24 17:47:03 · 708 阅读 · 0 评论 -
什么是lua文件?它的作用又是什么?(Clion安装时会提示是否安装这个插件)
Lua 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库原创 2020-07-22 09:23:40 · 1321 阅读 · 0 评论 -
LeetCode简单贪心------1029.两地调度
思路:这个题的关键在于明白如何取舍,谁应该去B。我们先假设所有人都去A,于是,我们要在所有去A的人中挑出去B的,那去B的应该满足什么条件呢?他应该满足,去B后,省的钱最多,所以我们只要把差值算出来,然后排一下序把最省钱的一半人挑去B市就好了。下面是C的代码typedef struct _price{ int priceA; int priceB; int pricecha;}price;int cmp(const void *a, const void *b){ .原创 2020-07-15 12:50:02 · 330 阅读 · 0 评论 -
暑假数据结构学习 -----递归与分治概念
4.3 递归4.31分治1.什么是分治?2.分治法的三个步骤?3.使用分治法,子问题需要满足的条件。4.什么是减治?5.分治法作为一种算法思想,有哪几种实现手段?这说明了什么?4.32递归6.递归逻辑中的两个重要概念。答案1.分治法将原问题划分为若干个规模较小而结构与原问题相似的子问题,然后分别解决这些子问题,最后合并子问题的解,即可得到为原问题的解。2.分治法的三个步骤:1.分解:将原问题分解为若干和原问题拥有相同或相似结构的子问题。 2.解决:递归求解所有子问题原创 2020-07-14 10:52:35 · 242 阅读 · 0 评论 -
LeetCode复习C语言中的问题编译出错:variable-sized object may not be initialized
**结论:**使用变量定义长度时,不可在定义时同时进行初始化赋值,需要在之后进行赋值。我们在定义可变长数组时: int a = 10;char s[a] ;//编译不报错//char s[a]=“123”;//这样是不可以的原创 2020-07-08 20:04:46 · 1637 阅读 · 0 评论 -
LeetCode中函数题中“多出来的参数“---returnsize
转载:关于returnSize第一次在leetcode上瞎逛就遇到了就遇到了它~int* twoSum(int* nums, int numsSize, in...转载 2020-07-08 18:14:54 · 9075 阅读 · 9 评论 -
LeetCode难度简单:9.回文数,进阶:你能不将整数转为字符串来解决这个问题么
进阶思路:利用求余,取出最后一位,乘10,通过多次乘10来把原来的整数的最后一位提升至第一位。bool isPalindrome(int x){ long res = 0; int temp = x; while(temp >0)//这个思路的核心 { res = res*10 +temp%10; temp/=10; } if(res == x) { return true; } els原创 2020-07-08 10:49:41 · 341 阅读 · 0 评论 -
7-5 藏尾诗 (15point(s))PTA
#include<stdio.h> #include<string.h>int main(){ char a[20]; char res[9]; int ll=0; int len; for(int i = 0 ; i < 4 ;i++) { scanf("%s",a); len = strlen(a); res[ll++]=a[len-2];//原来我写的是len -3 ,len -2 ,但是,len是不包括\0的,只是字符串的长度 re.原创 2020-06-16 12:04:25 · 677 阅读 · 0 评论 -
PTA-方阵循环右移
题解:#include<stdio.h> int main(){ int a[10][10],i,j,n,m; scanf("%d %d",&m,&n); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); m=m%n; //可能会出现m比n大,取余 for(i=0;i<n;i++).原创 2020-06-16 09:57:11 · 3548 阅读 · 2 评论 -
7-4猴子吃桃问题及我的大致思路:
#include<stdio.h>int N;int digui(int x){ if(x == 1) { return 1; } return 2*( digui(x -1) + 1);}int main(void){ int last = 1; scanf("%d",&N); printf("%d",digui(N)); return 0;} 大致思路:本题可以用递归和while循环写,并且,递归会在PTA上超时,但是我认为递归的思路还.原创 2020-06-14 23:16:49 · 777 阅读 · 0 评论 -
memset,fill---对数组中每一个元素赋相同的值
memset函数的格式为memset(数组名,值,siezof(数组名));注意点:1.在使用memset时,需要加上头文件string.h。2.只建议初学者用memset赋0 或 -1,这是因为memset使用的是按字节赋值,即对每个字节赋同样的值。如果要赋其他值,最好用fill(但是memset的执行速度更快)fill()fill()可以把数组或容器中的某一段区间赋为某个相同的值。和memset不同,这里的赋值可以是数组类型对应范围的任意值。用法:int a[5] = {1,2,3,4,原创 2020-06-14 09:58:46 · 438 阅读 · 0 评论 -
二叉树的最大叶子节点个数(包括完全二叉)
设n为节点个数,m为最大叶子节点个数结论:如果n为奇数 m= (n+1)/2;如果n为偶数,m=n/2;原创 2020-04-06 08:45:46 · 2090 阅读 · 0 评论 -
蓝桥杯:历届试题:对局匹配的DP动态规划写法
标题:对局匹配小明喜欢在一个围棋网站上找别人在线对弈。这个网站上所有注册用户都有一个积分,代表他的围棋水平。小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起。如果两人分差小于或大于K,系统都不会将他们匹配。现在小明知道这个网站总共有N名用户,以及他们的积分分别是A1, A2, … AN。小明想了解最多可能有多少名用户同时在线寻找对手,但是系统却一场对局都匹配...原创 2020-04-04 15:33:41 · 409 阅读 · 2 评论 -
蓝桥杯:历届试题:对局匹配:贪心算法,这个思路挺牛的
题目:问题描述小明喜欢在一个围棋网站上找别人在线对弈。这个网站上所有注册用户都有一个积分,代表他的围棋水平。小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起。如果两人分差小于或大于K,系统都不会将他们匹配。现在小明知道这个网站总共有N名用户,以及他们的积分分别是A1, A2, … AN。小明想了解最多可能有多少名用户同时在线寻找对手,但是系统却一场对局...原创 2020-04-03 21:26:13 · 1596 阅读 · 0 评论 -
蓝桥杯 : 历届试题:小数第n位
#include<stdio.h>#include<bits/stdc++.h>using namespace std;int main(void){ int a, b, n; double res; cin >> a >> b >> n; res = (double)a / b; cout <<...原创 2020-03-26 19:44:45 · 368 阅读 · 0 评论 -
蓝桥杯:历届试题 分考场
问题描述n个人参加某项特殊考试。 为了公平,要求任何两个认识的人不能分在同一个考场。 求是少需要分几个考场才能满足条件。输入格式 第一行,一个整数n(1<n<100),表示参加考试的人数。 第二行,一个整数m,表示接下来有m行数据 以下m行每行的格式为:两个整数a,b,用空格分开 (1<=a,b<=n) 表示第a个人与第b个人认识。输出格式 一...原创 2020-03-26 13:37:28 · 334 阅读 · 0 评论 -
记住写 using namespace std;error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
这个图片是我这次要说的一个问题,其实主要是他说了father是未声明的标识符,这里的错误是,因为我申请的是一个全局的vector father,不小心把他的声明写在了,using namespace std;的前面。...原创 2020-03-24 21:55:24 · 553 阅读 · 0 评论 -
蓝桥杯:历届试题 合根植物 和INF的巧妙取值
下面是题干:问题描述w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗?输入格式 第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1<m,n...原创 2020-03-24 21:50:09 · 298 阅读 · 0 评论 -
蓝桥杯校内模拟2020
问题描述 小明想知道,满足以下条件的正整数序列的数量: 1. 第一项为 n; 2. 第二项不超过 n; 3. 从第三项开始,每一项小于前两项的差的绝对值。 请计算,对于给定的 n,有多少种满足条件的序列。输入格式 输入一行包含一个整数 n。输出格式 输出一个整数,表示答案。答案可能很大,请输出答案除以10000的余数。样例输入4样例输出7样例说明 以下...原创 2020-03-23 11:11:06 · 255 阅读 · 0 评论 -
c++ getline函数
虽然可以使用 cin 和 >> 运算符来输入字符串,但它可能会导致一些需要注意的问题。当 cin 读取数据时,它会传递并忽略任何前导白色空格字符(空格、制表符或换行符)。一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取。以下面的语句为例:cin >> name;可以输入 “Mark” 或 “Twain”,但不能输入 “Mark Tw...转载 2020-03-20 16:42:35 · 193 阅读 · 0 评论 -
蓝桥杯:基础练习:高精度加法
**时间限制:**1.0s 内存限制:512.0MB问题描述 输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。 定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。 计算c = a +b的时候,首...原创 2020-03-09 15:26:39 · 404 阅读 · 0 评论 -
蓝桥杯:基础练习:字母图形
**问题描述利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。输入格式:输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。输出格式:输出n行,每个m个字符,为你的图形。样例输入:5 7样例输出:ABCDEFG...原创 2020-03-01 17:40:16 · 238 阅读 · 0 评论 -
C语言中关于全局变量的初始化与赋值head’ doesn’t name a type(查过大量资料后基本搞懂了)
上周例会时学长让写一个合并链表,我本来觉得挺简单的,但是意外发现了一个全局变量的赋值问题。我把链表的头节点的next在函数外赋值为了NULL。(head->next=NULL)然后程序报错,说"‘head’ doesn’t name a type".于是我查了些资料终于发现了问题。1赋值与初始化时两个概念:在C primer 中,作者专门强调了这一点。书中的原话时这样的:初始化不...原创 2019-12-19 19:37:59 · 1706 阅读 · 4 评论