随笔分类 - 数据结构与算法
摘要:树树:树是一个非空的有限元素的集合,其中一个元素为根(root),余下的元素(如果有的话)组成t的子树。层次关系:层次中最高层的元素为根。其下级的元素是余下元素所构成子树的根。兄弟:有相同父母的孩子为兄弟(sibling) 叶子:树中没有孩子的元素称为叶子。 树根是树中唯一一个没有父节点的元素...
阅读全文
摘要:一. AES对称加密: AES加密 分组二.分组密码的填充 分组密码的填充 PKCS#5填充方式三.流密码:四.分组密码加密中的四种模式:3.1 ECB模式优点:1.简单;2.有利于并行计算;3.误差不会被传送;缺点:1.不能隐藏明文的模式;2.可能对明文进行主动攻击;3.2 CBC模式:优点:1.不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。缺点:1.不利于...
阅读全文
摘要://解线性方程组#include<iostream.h>#include<iomanip.h>#include<stdlib.h>//----------------------------------------------全局变量定义区const int Number=15; //方程最大个数double a[Number][Number],b[Number],copy_a[Number][Number],copy_b[Number]; //系数行列式int A_y[Number]; //a[][]中随着横坐标增加列坐标的排列顺序,如a[0][0],a[
阅读全文
摘要:今天看了windows程序第8章的 DigClock程序,令我感叹不已呀。是一个数字时种,如下:让我明白了原先我们去的那种老式数字电子表的数字是怎样显示的,那个要显示0-9的数字,通过变换方块的多少来表示0-9的方法,记得以前我也研究过,但是始终没想到作者用那么短的代码实现了。唉,哪位大大能告诉我,为什么作者能用那么短的几个函数把这些数字控制自如,这个需要什么技术?数据结构?我想不是。。。。
阅读全文
摘要://判断一个数为多少位 比如 3 是 1位 102 是3位。#include <iostream>using namespace std;int main(){ int a; cout<<"input a num"<<endl; cin>>a; int t=1; for(int i=10;i<10000000;i*=10,t++) if(a&...
阅读全文
摘要:很多时候,写程序都是思维变算法,算法变代码的过程,其中很关键的步就是思维变算法。这里所说的思维就是,你眼睛能看出来规律。再简单明了就是比如一个题目:统计一个英文字符串中的英文单词个数,如字符串“I am a student.”中的英文单词个数为4。如果给你一个字符串 I am a student 。你一数就得到了答案4 ,这是很自然的事,被看作常识。可是关键,怎样转变为算法。唉,这就是一个思维变算法的过程。这还得由简入繁追溯到大脑的底层数据。你大脑是怎么得到的4呢,因为你数了,你是怎么数的呢?噢是这样,出现了字母后面一个空格则这个就是一个单词,如果这个字母后面仍然是字母,则它还是同一个单词,
阅读全文
摘要:/*不用任何库函数,系统函数,完成函数 int maxContinuNum(const char* inputstr,char *outputstr);返回给定字符串中最长连续数字串,让outputstr指向该串,然后值是其长度。例如sss12345ss1245sfdf123456789返回,9,outputstr指向123456789。*/#include <iostream>usi...
阅读全文
摘要://输入集合A、B和全集C,求两集合的交集、并集、补集、差集/*并集:以属于A或属于B的元素为元素的集合成为A与B的并(集) 交集: 以属于A且属于B的元素为元素的集合成为A与B的交(集) 差:以属于A而不属于B的元素为元素的集合成为A与B的差(集) 补集:A的补集C-B*//*例如:A={1,2,3} B={2,3,4} C={1,2,3,4,5}AB并集为={1,2,3,4}交集为={2,3}...
阅读全文
摘要:例如:有以下字符串 字符串是:char str*="ok112009this9964541look"提取字符串里的单词并输出。思路:顺序读入,判断是否为字母, 是则顺序输出,不是则输出空格然后把 state置为0。 有效的解决了重复输出空格的问题
阅读全文
摘要://找出数组中第二大数。//#include <iostream>using namespace std;int find_second_max(int data[],int count){ int max,s_max=0; max=data[0]; for (int i=1;i<count;i++) { if (max<data[i]) { s_max=max; max=data[i]; } else if(max>data[i] &&(s_max<data[i])) s_max=data[i]; } return s_max;}int m
阅读全文
摘要:#ifndef IOSTREAM#include <iostream>#endiftemplate<class T>class Stack{public: Stack(int MaxSize=10); ~Stack(); bool IsEmpty()const{return top==0;} bool IsFull()const{return top==MaxTop;} T Top()const; Stack<T>&Add(const T &x); Stack<T>&Delete(T&x); int GetStac
阅读全文