![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
奈何辰星无可奈
github: hackerchenzhuo
展开
-
前序+中序生成二叉树 or 后序+中序生成二叉树,并且以凹入法输出
#include<iostream>#include<stdlib.h>#include <windows.h>using namespace std;typedef struct Node{ char data; struct Node *leftChild; struct Node *rightChild;} BiTreeNode...原创 2019-10-28 15:02:41 · 720 阅读 · 0 评论 -
四则运算【加减乘除,使用双栈】——括号,加减乘除
#include<iostream> #include<string> #include<stack> #include<sstream> using namespace std; int getP(char ch) { //获取优先级 if (ch == '(') return 1; ...原创 2019-10-28 15:00:49 · 1144 阅读 · 0 评论 -
二叉树基本算法实现:[二叉树构造,左右子树交换,key值查找]
ABC##DE#G##F####include <iostream>#include <string>using namespace std;string str;int i;//全局变量struct BinaryTree{ char val; struct BinaryTree* lchild, * rchild; BinaryTree(ch...原创 2019-10-28 14:56:39 · 793 阅读 · 2 评论 -
leetcode 11.盛水最多的容器 c++
方法1:暴力法。从前往后,每次检索 最长的区域*二者间最矮的高度。时间复杂度O(n^2)class Solution {public: int maxArea(vector<int>& height) { if(height.size()<=1) return 0; else{ int siz...原创 2019-05-01 10:39:45 · 235 阅读 · 0 评论 -
部分算法模板【转】
作者:键盘里的青春来源:CSDN原文:https://blog.csdn.net/qq_34374664/article/details/80412575目录最短路spfa、dij、floyd + 记录路径floyd:spfa 和 dij次短路其他例题:博弈SG函数尼姆博弈威佐夫博弈巴什博弈Tarjan算法缩点裸题强...原创 2019-06-08 18:45:05 · 151 阅读 · 0 评论 -
搜索进阶-迭代加深搜索【BFS与DFS的综合】
来源:CSDN原文:https://blog.csdn.net/hzaukotete/article/details/81226556我个人对这个搜索的理解就是以BFS的思想写DFS。具体来说就是,首先深度优先搜索k层,若没有找到可行解,再深度优先搜索k+1层,直到找到可行解为止。由于深度是从小到大逐渐增大的,所以当搜索到结果时可以保证搜索深度是最小的。这也是迭代加深搜索在...原创 2019-06-09 10:38:38 · 657 阅读 · 0 评论 -
归并排序【分治法的应用+有序数列组合的应用】
1.void mergearray(int a[],int first,int mid,int last,int temp[]) //将两个有序数组合并排序2.void mergesort(int a[],int first,int last,int temp[]) //将两个任意数组合并排序我的理解:该排序算法的应用范围是:有序数列对于两个有序数列,组合的时...原创 2019-06-09 15:55:11 · 313 阅读 · 0 评论 -
七大排序算法比较【冒泡、选择、插入、希尔、快排、归并,堆】
目录1.冒泡排序2.选择排序3.插入排序3.1 二分插入排序4. 希尔排序5. 快速排序6.归并排序我的理解:7.堆排序排序算法总结:1.冒泡排序(bubble sort)1.每次比较相邻的两个数。2.两重循环。第一重循环的意义是找出len个有序数。下标:i3.对于第二重循环,循环只需要在前len-1-i个数里面找。因为此时...原创 2019-06-09 17:21:07 · 7360 阅读 · 0 评论 -
一文解决动态规划构思问题
股票系列问题,只用一种通用方法解决所用问题,以不变应万变。这篇文章用状态机的技巧来解决,可以全部提交通过。不要觉得这个名词高大上,文学词汇而已,实际上就是 DP table,看一眼就明白了。先随便抽出一道题,看看别人的解法:int maxProfit(vector<int>& prices) { if(prices.empty()) return 0;...原创 2019-06-20 20:41:36 · 166 阅读 · 0 评论 -
PAT 1146 Topological Order (25 分) 拓扑验证
Sample Input:6 81 21 35 25 42 32 63 46 451 5 2 3 6 45 1 2 6 3 45 1 2 3 6 45 2 1 6 3 41 2 3 4 5 6Sample Output:3 4#include<iostream>#include<string>#include<s...原创 2019-09-22 15:33:03 · 173 阅读 · 0 评论 -
二分查找【集成】
二分查找法作为一种常见的查找方法,将原本是线性时间提升到了对数时间范围,大大缩短了搜索时间,但它有一个前提,就是必须在有序数据中进行查找。二分查找很好写,却很难写对,据统计只有10%的程序员可以写出没有bug的的二分查找代码。出错原因主要集中在判定条件和边界值的选择上,很容易就会导致越界或者死循环的情况。下面对二分查找及其变形进行总结:1. 最基本的二分查找public int ...原创 2019-04-30 21:44:33 · 162 阅读 · 0 评论 -
leetcode 3.无重复字符的最长子串
我的代码:class Solution {public: int lengthOfLongestSubstring(string s) { int L=s.size(); if(L<=1) return L; map<char,int> m; int max=1; for(int...原创 2019-04-23 20:51:59 · 115 阅读 · 0 评论 -
leetcode 2. 两数相加
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode*...原创 2019-04-23 15:26:08 · 107 阅读 · 0 评论 -
ccf 201803-2 碰撞的小球
感觉自己的方法应该不是最优的,但是也还算清晰。若有更好的方法欢迎指出。问题描述 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒。 当小球到达线段的端点(左端点或右端点)的时候,会立即向相反的方向移动,速度大小仍然为原来大小。 当两个小球撞...原创 2019-03-09 19:36:09 · 94 阅读 · 0 评论 -
CCF 201812-2 小明上学 题目很长,原理很简单
很简单的一个题目,直接上代码了。题目背景 小明是汉东省政法大学附属中学的一名学生,他每天都要骑自行车往返于家和学校。为了能尽可能充足地睡眠,他希望能够预计自己上学所需要的时间。他上学需要经过数段道路,相邻两段道路之间设有至多一盏红绿灯。 京州市的红绿灯是这样工作的:每盏红绿灯有红、黄、绿三盏灯和一个能够显示倒计时的显示牌。假设红绿灯被设定为红灯 r 秒,黄灯 y 秒,绿灯 g 秒...原创 2019-03-09 20:08:04 · 407 阅读 · 0 评论 -
CCF 201812-2 小明放学 空间复杂性需要考虑
这个其实做的挺顺的,用个next数组搞定,小数据上正确了,大数据不知道怎么搞的,第一次提交时貌似没过。感觉应该不是超时的问题。题目背景 汉东省政法大学附属中学所在的光明区最近实施了名为“智慧光明”的智慧城市项目。具体到交通领域,通过“智慧光明”终端,可以看到光明区所有红绿灯此时此刻的状态。小明的学校也安装了“智慧光明”终端,小明想利用这个终端给出的信息,估算自己放学回到家...原创 2019-03-09 20:50:11 · 920 阅读 · 1 评论 -
ccf csp 201703-4 地铁修建 c++最小生成树
第一次的错误:freopen忘记注释第二次第三次都没有想到最关键的错误点上:Tree和findroot不是对等的!!!!!!所以很悲催。这个题目其实就是一个最小生成树问题求解,不过不需要求出所有的子节点。只要1和n连通就行。即findroot(n)==1即可。下面上代码。问题描述 A市有n个交通枢纽,其中1号和n号非常重要,为了加强运输能力,A市决定在1号到n号枢纽...原创 2019-03-15 12:22:03 · 479 阅读 · 0 评论 -
ccf csp认证 201612-3 权限查询 一口老血涌上心头
事先声明:之所以我的注释写的这么详尽。。是因为如果不加注释我可能写到后面自己都不知道在干嘛。。。问题描述 授权 (authorization) 是各类业务系统不可缺少的组成部分,系统用户通过授权机制获得系统中各个模块的操作权限。 本题中的授权机制是这样设计的:每位用户具有若干角色,每种角色具有若干权限。例如,用户 david 具有 manager 角色,m...原创 2019-03-15 21:46:28 · 266 阅读 · 0 评论 -
CCF201809-2 买菜
其实这个题有简单的方法,用空间换时间。我试过那种方法,当时ZZ了,用的i=a;i<=b;i++,最后统计数组中值为2的数。然后长度总是会超,现在想,当时就是白痴。(正确的应该是i=a;i<b;i++。应该左闭右开)不过后来换了一种方法,也可以做,即:定义一个判断是否有交叉的函数,然后进行暴力破解,若区间有相交,则进行相交区域计算(中间需要剪枝。)下面贴出代码:...原创 2019-03-08 11:59:53 · 243 阅读 · 0 评论 -
在oj平台上练习的一些经验与总结【转】
在oj平台上练习的一些总结【转】程序书写过程中的一些小技巧:1. freopen(“1.txt”,”r”,stdin); //程序运行后系统自动输入此文档里面的内容(不需要进行手动输入)freopen(“1.txt”,”w”,stdout); //程序输出的内容保存在此文件里2. memset(a,0,sizeof(a)); //数组的初始化。一般定义一个数组都要初始化数组定义i...转载 2019-03-22 10:22:36 · 592 阅读 · 0 评论 -
CCF认证 201703-3 Markdown 没有逻辑难度,细节程度十分感人
作为一个巨恶心的模拟题,这个题目让我在逻辑清醒的情况下足足写了2个小时。。。中途还顺便吃了个饭。。不过说到底,其实该题的难度并不大,最为一个大模拟,其难度主要就是堆代码而已,只要保持清醒就行。下面上题目。(小声bb:期间两次运行错误原因主要是因为忘记把//freopen("C:\\Users\\dell\\Desktop\\in.txt","r",stdin);删掉了,所以考试的时...原创 2019-03-13 20:16:56 · 273 阅读 · 1 评论 -
CCF CSP 201604-2 俄罗斯方块 需要考虑边界情况,特殊情况(列满列空)
比较简单的一个小模拟,主要难点就是是坐标平移变换前确定“支点”位置,然后以支点为轴进行坐标变换。。问题描述 俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏。 游戏在一个15行10列的方格图上进行,方格图上的每一个格子可能已经放置了方块,或者没有放置方块。每一轮,都会有一个新的由4个小方块组成的板块从方格图的上方落下,玩家可以操作板块左右移动放到合适的位置,当板块中...原创 2019-03-13 20:33:42 · 216 阅读 · 0 评论 -
人生苦短,然而我还得用c++——之 大精读数计算模板
这是c++在刷题过程中的必经之路:大数计算。很经典的问题。主要就是因为c++中数值范围,无法计算大整数,以及POJ中1001也提到了——大小数。总之,这种题最重要的就是一个函数,这个函数思想掌握了,以后可以用更简单的语句实现:bigIn operator +(const bigIn &A) const{ bigIn ret; ...原创 2019-03-22 21:29:31 · 563 阅读 · 0 评论 -
CCF 201709-2 公共钥匙盒 从构思到写完所花时间大概45分钟。
CCF 201709-2 公共钥匙盒 写完所花时间大概45分钟。问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家。每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥匙盒中。 钥匙盒一共有N个挂钩,从左到右排成一排,用来挂N个教室的钥匙。一串钥匙没有固定的悬挂位置,但钥匙上有...原创 2019-03-09 16:16:34 · 142 阅读 · 0 评论