算法
断线纸鸢s
这个作者很懒,什么都没留下…
展开
-
递归
递归递归函数:非常重要的一点就是不要在意他的过程是怎么实现的而是要选择去相信他,这是一定可以实现的。能得到我们想要的结果,并且将它当做结论来使用使用递归函数:1.确定这个函数的功能。2.确定这个函数的返回值。3.相信这个函数可以得到我们想要的。4.在我们的递归函数中怎么使用到这个递归函数本身,也就是他的子问题。5.他的终止条件是什么。(我们递归所变化的参数当为什么值时不用递归就可以明确知道他的返回值)6.在调用递归函数之后我们可以继续进行操作,我们只需要知道他返回的值是什么,无需关心他是怎么原创 2020-09-23 16:43:18 · 73 阅读 · 0 评论 -
约数之和笔记
约数之和题目链接:https://www.acwing.com/problem/content/99/题目简介:假设现在有两个自然数A和B,S是ABAB的所有约数之和。请你求出S mod 9901的值是多少。输入格式在一行中输入用空格隔开的两个整数A和B。输出格式输出一个整数,代表S mod 9901的值。数据范围0≤A,B≤5×1070≤A,B≤5×107输入样例:2 3输出样例:15注意: A和B不会同时为0。数学知识分析:名词解释:**约数(因数):**可以被原创 2020-09-23 16:42:57 · 250 阅读 · 0 评论 -
二叉树
二叉树树的遍历树的遍历顺序,都是以根为主体如果根作为第一个访问的结点 那就是前序遍历前序遍历是最简单的一个遍历,在拿到一个结点后先判断是不是空结点,如果不是空结点,直接访问自身,依次再判断有无左右结点。如果根放在第二个访问的结点 那就是中序遍历中序遍历相对麻烦,其操作过程是在拿到一个结点之后先判断有无左子树如果有左子树先访问左子树直至到没有左子树。再进行访问自身,之后考虑右子树。访问结点的条件:确定以身为根节点,左子树下的所有结点包括左子树结点本身全访问完的情况下才访问自身结点如原创 2020-09-23 16:42:43 · 110 阅读 · 0 评论 -
动态规划
动态规划动态规划题目类型特点计数有多少种方式走到右下角有多少种方法选出k个数使得和是sum求最大最小值从左上角走到右下角路径的最大数字和最长上升子序列长度求存在性去石子游戏,先手是否必胜能不能选出k个数使得和是sum类型一:求最大最小值例题:LintCode 669:Coin Change[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qBemezGl-1600575649334)(动态规划.assets/15713647269原创 2020-09-23 16:42:29 · 161 阅读 · 0 评论 -
排列
递归全排列分析实现全排列的思路(两种思路)第一种思路:用函数功能的角度去分析递归、实现排列!举一个例子:全排列 1,2,3他的结果有6种情况:1 2 31 3 22 1 32 3 13 2 13 1 2分析:可以发现第一个数为不同数的时候都有两种情况,当然这里的两种情况是因为我们全排列的数为3所导致的,如果将数的范围增大你会发生其排列的情况也会随之增加。称之为n-1全排列种情况更为合适。试想一下,如果第一个数保持不变,后面的数进行全排列,也就是后面的排列顺序都是不同的,原创 2020-09-23 16:42:05 · 259 阅读 · 0 评论 -
STLgrasp
use frequently STL graspstring(字符串)所有的字符串函数都已经在上面了,下面列几个比较常用的函数:vector(不定长数组)1.导入函数库#include<vector> using namespace std;2.构造函数vector<int> v1 ( nums,value);nums:容量大小 value:值3.赋值v1 = v2;如果v1的容量>=v2的容量,可以将v2的值copy到v1中assign原创 2020-09-20 12:18:23 · 114 阅读 · 0 评论 -
STL list迭代器
STL list中迭代器1.链表的结构链表的结构:每一个链表上的节点都有三个部分:前指针,值,后指针分别说明一下这三者的作用:前指针(pre):指向前一个节点的值后指针(next):指向后一个节点的值值:节点上保存的东西链表是线性结构,由此我们可以知道链表上的各个节点的连接方式就是通过前后指针相连接,要想查找到某个节点只有通过前面的节点或者后面的节点。缺点:所以要查找链表中的某一个节点的值只有通过遍历的方式去查找!优点:插入删除某一个节点非常的方便例如:现在又nod1,nod2,原创 2020-09-20 12:17:53 · 410 阅读 · 1 评论 -
C++ cin输入不支持空格
C++ 的字符输入1. 使用cin输入,遇到空格后或者换行符结束一个字符数组的输入#include<iostream>using namespace std;int main(){ int n = 10; char arr[n]; cin>>arr; for(int i = 0; i < 10; i++){ printf("%c",arr[i]); } cout<<endl; cout原创 2020-09-20 12:17:29 · 4380 阅读 · 0 评论 -
Boxes_in_a_Line做题笔记
Boxes_in_a_Line 解题笔记题目描述:Background 背景You have n boxes in a line on the table numbered 1 . . . n from left to right. Your task is to simulate 4 kinds of commands:你在一个线盒在桌子上编号1 … n 从左到右。你的任务是模拟4种命令:• 1 X Y : move box X to the left to Y (ignore this if原创 2020-09-20 12:16:13 · 257 阅读 · 0 评论 -
VB初步入门
VB 入门记录(一)一、Visual Basic 界面简介打开题目进入界面是这个样子的 图一我们的题目信息在这里 图二然后当你双击那个产生按钮的时候 图三OK,这个时候我们需要用到的窗口界面就基本已经呈现出来了。工程在图的右上角那边...原创 2020-09-20 11:31:04 · 21033 阅读 · 7 评论 -
奇怪汉诺塔笔记
奇怪的汉诺塔普通的汉诺塔问题问题解释:借助B将A上面的圆盘串到C上面,大的圆盘不能放小的圆盘上面。每次只能移动一块圆盘。怎么样移动才能完成任务?思路分析:最简单的情况:当A上面的圆盘只有一块的时候:直接将A上面的圆盘放到C上面即可A——>C其次:当圆盘数量等于2的时候:将第一个圆盘放到B上面,再将A上面最底下的圆盘放到C上,再将B上面的圆盘放到C上A——&g...原创 2020-09-20 11:30:42 · 191 阅读 · 0 评论 -
多种组合算法对比
组合算法(二进制辅助法)1.什么是数学中的组合组合和排列不同,组合不需要考虑选择的元素的顺序,而排列需要。组合:从n个数中选择k个数组成一个组合,看有多少种不同的组合,每个数选择的先后顺序不受限制Cnk=Ankk!=n!k!(n!−k!)C^k_n = \frac{A_n^k}{k!} = \frac{n!}{k!(n!-k!)}Cnk=k!Ank=k!(n!−k!)n!...原创 2020-09-20 11:30:11 · 575 阅读 · 0 评论