摘要:
socket目 录socket 1.socket() 2.bind() 3.connect() 4.listen() 5.accept() 6.send() 和recv() 7.sendto() 和recvfrom() 8.close() 和shutdown() 9.getpeername() 10... 阅读全文
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1358题意:给你一个字符串,要求将字符串的全部字符最少循环2次需要添加的字符数。 例子: abcabc 已经循环2次,添加数为0 abcac 没有循环2次,添加字符abcac。数目为5. abcabcab 已经循环过2次,但第三次不完整,需要添加数为1 分析:还是用到了next数组,这个循环节这很巧妙啊。。。 做这个题需要好好理解KMP算法,尤其是next数组。非优化的next数组的含义是:next[i]=k默示模式串下标为i的字符的前k-1个字符与开首的前k-1个字符相等,那么从1到i-1的模式串 阅读全文
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1358主要考查KMP算法next数组本质的理解。len - len[len]为循环节的大小~~~代码如下: 1 #include <cstdio> 2 #include <cstring> 3 using namespace std; 4 5 const int N = 1000002; 6 char str[N]; 7 int next[N]; 8 9 void get_next(int len)10 {11 int i = 0;12 int j = -1;13 nex.. 阅读全文
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1050 1 #include <cstdio> 2 #include <cstring> 3 using namespace std; 4 5 int main() 6 { 7 int mark[201]; 8 int a, b; 9 int t;10 int n;11 while(scanf("%d", &t) != EOF)12 {13 for(int i = 0; i < t; i++)14 {15 ... 阅读全文
摘要:
我们在一个母字符串中查找一个子字符串有很多方法。KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度。当然我们可以看到这个算法针对的是子串有对称属性,如果有对称属性,那么就需要向前查找是否有可以再次匹配的内容。在KMP算法中有个数组,叫做前缀数组,也有... 阅读全文