C/C++
JstuCheng
这个作者很懒,什么都没留下…
展开
-
C/C++树遍历的应用-树的重建
输入: 第1行输入二叉树的结点数 第2行输入前序遍历的结点编号序列,相邻编号用空格分开 第3行输入中序遍历的结点编号序列,相邻编号用空格分开输出: 在1行中输出后序遍历的结点编号序列,用空格分开代...原创 2019-12-25 19:58:32 · 221 阅读 · 0 评论 -
C/C++二叉树的便利
输入: 第一行输入结点的个数。接下里n行按照下述格式输入各结点的信息,每个结点占一行。 id left right id为结点编号,left为左子结点编号,right为右子结点编号。不存在子结点时left(right)为-1输出: &n...原创 2019-12-25 10:50:08 · 250 阅读 · 1 评论 -
C/C++最长递增子序列
最长递增子序列:给定一个长度为N的数组,找出一个最长的单调递增子序列,子序列不一定连续,但初始顺序不能乱。例如:给定一个长度为6的数组A{4, 5, 7, 1,3, 9},则其最长的单调递增子序列为{4,5,7,9},长度为4。动态规划思路:记d[i]为以任意一个A[i]为末尾元素组成的最长递增子序列的长度,找出所有位于i之前且比A[i]小的元素A[j],此时可出现两种情况:(1)若...原创 2019-11-21 23:49:16 · 2223 阅读 · 0 评论 -
C++尺举法
#include<stdio.h> #include<iostream> #include<vector>using namespace std;int main(){ int m, n; vector<int> t; cin >> m >> n; for(int i = 0; i < m; i++)...原创 2019-11-06 12:57:31 · 248 阅读 · 0 评论 -
C++求最大公约数与最小公倍数
辗转相除法算法实现其实算法的实现原理就是,有两个整数a、b,每次求的一个数字r = a % b,然后把b放到a的位置,把r放到b的位置,递归调用。即gcd(a, b) { return gcd(b, a%b); }结束条件是当 a%b == 0的时候停止。递归实现#include<iostream>using namespace std;int gcd(int a, int...原创 2019-11-04 14:53:28 · 1126 阅读 · 0 评论 -
给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。
题目思路python实现class TreeNode(object): def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution(object): def generateTrees(self, n):...原创 2019-09-14 20:15:30 · 1349 阅读 · 1 评论 -
求给定数组中的最小正整数
题目思路筛选出1~len(nums)之间的数包括两端创建一个全为零的数组用于标记将筛选后数组中元素值作为标记数组的逻辑位置逻辑位置减一为索引,赋值为1进行标记遍历标记数组,若为零则表示在原数组中未出现该处索引值加1的正整数返回索引值加1C/C++实现#include<stdio.h>#include<stdlib.h>#include<st...原创 2019-09-14 19:23:37 · 1682 阅读 · 0 评论 -
C++最大长方形
首先如图所示,在表T中记录各元素向上存在多少个连续的干净瓷砖。对各列使用动态规划法可以很轻松地求出T把表T的每行都看成一个直方图,本题就了求直方图内最大长方形的问题,于是我们转为考虑求直方图中最大长方形的面积。这里最容易想到的仍然是穷举法,我们可以列出直方图的所有端点,求出各个范围内的最大长方形的面积(以该范围内最小值为高的长方形的面积)。然后取其中最大值。但是,这个算法套用到原题中的话,整体的...原创 2019-08-28 12:46:11 · 576 阅读 · 0 评论 -
C++八n皇后问题
要求解这一问题,最直接的方法就是穷举出8个皇后的所有摆放方法,然后依次检查其是否满足题中条件。棋盘共有8×8=64格,每次要选择8个格放皇后,因此总共有c=4426165368种组合。就算考虑到2个皇后无法同时出现在1行,即每行只能有1个皇后,那也有8的八次方1677216种组合。再加上2个皇后无法同时出现在1列,于是有8!=40320种组合。相对地,使用下面所讲的回溯法求解八皇后问题,要远比遍...原创 2019-08-28 09:54:23 · 245 阅读 · 0 评论 -
C++中STL常见用法总结
一、什么是STL?(Standard Template Library,STL)标准模板库,所谓模板,是指不必预先制定类型的函数或类。可以借助STL提供的高效算法来管理数据。STL中体现了泛型化程序设计的思想,引入了诸多新的名词,比如像容器(container),算法(algorithmn),迭代子(iterator)等。二、STL内容介绍容器(Container),是一种数据结构,如li...原创 2019-08-09 00:24:14 · 304 阅读 · 0 评论 -
C语言实现二分搜索
C语言实现二分搜索left指示搜索范围开头的元素,right指示末尾元素的后一个元素。二分搜索流程如下图所示。二分搜多C语言实现#include<stdio.h>int A[1000000], n;/* 二分搜索 */int binarySearch(int key){ int left = 0; int right = n; int mid; while(l...原创 2019-08-06 12:02:45 · 307 阅读 · 0 评论 -
C/C++实现双向链表
C++实现双向链表#include<cstdio> #include<cstdlib>#include<cstring>struct Node{ int key; Node *next, *prev;};Node *nil;Node* listSearch(int key){ Node *cur = nil->next; // 从...原创 2019-08-06 00:22:14 · 180 阅读 · 0 评论 -
C/C++基础排序
C/C++ 基础排序算法插入排序法冒泡排序法选择排序法插入排序法 #include<stdio.h> /* 插入排序法 一、将开头元素视为已排序 二、执行下述处理,直至排序部分消失 1. 取出未排序部分的开头元素赋给变量v; 2. 在已排序部分,将所有比v大的元素向后移动一个单位; 3. 将已取出的元素v插入空位; */ /* 按顺...原创 2019-07-31 08:14:14 · 285 阅读 · 0 评论