算法
文章平均质量分 69
此号不用,请关注 夜雨柠檬
请关注,夜雨柠檬
展开
-
算法 算法竞赛入门经典第二版 2-6 排列
用1,2,3,···,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3.按照“abc def ghi”的格式输出所有解,每行一个解。提示:不必太动脑筋。#include <stdio.h>int main(){ int a[9] = {0}; for(int i = 123; i <= 329; i++)...原创 2018-03-04 19:04:55 · 484 阅读 · 0 评论 -
算法 斐波那契数列的递归
做一个豁达而努力的自己。斐波那契数列的数学函数定义:用递归的代码实现:#include <iostream>using namespace std;int Fbi(int i){ if(i < 2) return i == 0 ? 0 : 1; //i为0返回0,i为1返回1 return Fbi(i - 1) + Fbi(i - 2);...原创 2018-03-30 18:05:51 · 309 阅读 · 0 评论 -
算法 汉诺塔问题
做一个豁达而努力的自己。汉诺塔问题是一个典型的递归问题,其实也就是按照自己思路写出来就行了,,,有3柱塔A,B,C,A为初始塔,B为借助塔,C为目标塔,,,目标是要将A上的圆盘借助B运到C,规则:1.每次只能移动一个圆盘, 2.圆盘可以放到A,B,C中任意一个塔上, 3.任意时刻不可以将较大圆盘放在较小圆盘上面,分析(借助代码): 当A上只有1个圆盘时,直...原创 2018-03-27 12:58:11 · 898 阅读 · 0 评论 -
算法 括号的匹配
括号的匹配用到了栈的初始化,压栈,弹栈,栈顶元素的获取,和栈是否为空,这里就不写了,我们也可以使用stl中的stack来定义一个栈,,,算法步骤:1.初始化一个空栈2.定义一个flag标记,用以判断括号是否匹配,初始化的时侯将flag标记设为1,当括号不匹配时,flag变为03.用循环语句,首先遇到'(','[','{'时,将字符压入栈中,若遇到')',']','}'时,栈顶没有与之匹配的左括号,...原创 2018-04-15 12:31:57 · 339 阅读 · 0 评论 -
算法 表达式求值
重中之重,这个博客还是有bug的,请转看逆波兰表达式(自认为当时写的还不错)表达式求值中用到了两个栈,一个栈存放的是操作数,另一个栈存放的是操作符(运算符号和#),#可以让循环结束(#优先级最小),下面是各个操作符优先级的比较,其中θ1为opter(操作符)栈的栈顶,θ2位字符ch,x意为不可比较步骤:1.先初始化两个栈opval(操作数)栈,opter(操作符)栈2.将起始符...原创 2018-04-17 11:17:38 · 9102 阅读 · 7 评论 -
算法 进制转换
做一个豁达而努力的自己。这里的进制转换是基于顺序栈的基础上写的,主要是将十进制通过一个函数转换成八进制然后存储到栈中,最后输出。转换函数:void Conversion(SqStack &s, int n){ InitStack(s); //栈的初始化 while(n) //将十进制转换成八进制存储到栈中 { Push(s, n...原创 2018-04-11 21:43:56 · 285 阅读 · 0 评论 -
算法 BF算法
BF算法是字符匹配的一种算法,也称暴力匹配算法算法思想:从主串s1的pos位置出发,与子串s2第一位进行匹配若相等,接着匹配后一位字符若不相等,则返回到s1前一次匹配位置的后一位,接着与s2的起始位进行匹配直到与s2全部匹配成功,则返回在s1中开始完全匹配的下标简单说这个算法的思想就是匹配失败,就重新从上一次匹配位置的下一位开始匹配难理解之处:①i = i - j + 2,这一步是若匹配失败,从上...原创 2018-04-18 17:29:35 · 10486 阅读 · 3 评论 -
算法 kmp算法
kmp算法是改进后的字符匹配算法,它与bf算法的区别是,每次从串与主串匹配失败后,从串与主串匹配的位置不同。下面具体说下这两种算法的区别:主串:BABCDABABCDABCED从串:ABCDABCEDBF算法:第一步:BABCDABABCDABCEDA 从主串的第一个字符位置开始与从串第一个字符位置进行匹配,匹配失败第二步:BABCDABABCDABCED ABCDAB...原创 2018-04-25 20:31:06 · 732 阅读 · 0 评论