字符串匹配
1 //字符串匹配 2 #include<iostream> 3 #include<windowsx.h> 4 #include<string.h> 5 using namespace std; 6 7 int ViolentMatch(char *s, char *t) 8 { 9 int slen = strlen(s); 10 int tlen = strlen(t); 11 int i = 0,j = 0; 12 while (i < slen && j< tlen) 13 { 14 if (s[i] == t[j]) 15 { 16 i++; 17 j++; 18 } 19 else 20 { 21 i = i - j + 1; 22 j = 0; 23 } 24 } 25 if (j == tlen) 26 { 27 return i - j; 28 } 29 else 30 { 31 return -1; 32 } 33 34 } 35 36 int main() 37 { 38 //char *a="aaaabaa" ; char *b="b" ; 39 string a;string b; 40 41 42 cout << ViolentMatch(a, b) << endl; 43 system("pause"); 44 return 0;
最大回文子串
1 //最大回文子串 2 /* 3 #include<iostream> 4 5 using namespace std; 6 7 int LongestPalinderom(char *s, int n) 8 { 9 int i, j, max, c; 10 if (s == 0 || n < 0) 11 { 12 return 0; 13 } 14 max = 0; 15 for (i = 0;i < n;++i) 16 { 17 for (j = 0;(i - j >= 0) && (i + j < n);++j) 18 { 19 if (s[i - j] != s[i + j]) 20 { 21 break; 22 } 23 c = j * 2 + 1;//对称字符串为奇数 24 } 25 if (c > max) 26 { 27 max = c; 28 } 29 for (j = 0;(i - j >= 0) && (i + j + 1 < n);++j) 30 { 31 if (s[i - j] != s[i + j + 1]) 32 { 33 break; 34 } 35 c = j * 2 + 2;//对称字符串为偶数 36 } 37 if (c > max) 38 { 39 max = c; 40 } 41 } 42 return max; 43 } 44 45 int main() 46 { 47 char a[64]; 48 int n; 49 cin >> a; 50 n=strlen(a); 51 cout << LongestPalinderom(a, n) << endl; 52 system("pause"); 53 return 0; 54 } 55 56 */
全排列
1 //全排列 2 /* 3 #include<iostream> 4 using namespace std; 5 #include<assert.h> 6 7 //在[nBegin,nEnd)区间中是否有字符与下标为pEnd的字符相等 8 bool IsSwap(char* pBegin, char* pEnd) 9 { 10 char *p; 11 for (p = pBegin; p < pEnd; p++) 12 { 13 if (*p == *pEnd) 14 return false; 15 } 16 return true; 17 } 18 void Permutation(char* pStr, char *pBegin) 19 { 20 assert(pStr); 21 22 if (*pBegin == ' ') 23 { 24 static int num = 1; //局部静态变量,用来统计全排列的个数 25 printf("第%d个排列 %s ", num++, pStr); 26 } 27 else 28 { 29 for (char *pCh = pBegin; *pCh != ' '; pCh++) //第pBegin个数分别与它后面的数字交换就能得到新的排列 30 { 31 if (IsSwap(pBegin, pCh)) 32 { 33 swap(*pBegin, *pCh); 34 Permutation(pStr, pBegin + 1); 35 swap(*pBegin, *pCh); 36 } 37 } 38 } 39 } 40 41 int main(void) 42 { 43 char str[64]; 44 // int n; 45 cin >> str; 46 // n=strlen(a)-1; 47 // char str[] = "baa"; 48 Permutation(str, str); 49 system("pause"); 50 return 0; 51 } 52 53 */
汉诺塔
1 //汉诺塔 2 3 #include<iostream> 4 5 using namespace std; 6 7 void hanoi(int n, char one, char two, char three)//n个盘子从one移到three(借助two) 8 { 9 int count = 0; 10 void move(char x, char y); 11 if (n == 1) 12 move(one, three); 13 else 14 { 15 hanoi(n - 1, one, three, two);//n-1个盘子从one移到two 16 move(one, three); 17 hanoi(n - 1, two, one, three);//n-1个盘子在从two移到three 18 } 19 } 20 21 void move(char x, char y) 22 { 23 cout << x << "-->" << y << endl; 24 } 25 26 int main() 27 { 28 void hanoi(int n, char one, char two, char three); 29 int m; //输入多少个盘子 30 cin >> m; 31 hanoi(m, 'A', 'B', 'C'); 32 system("pause"); 33 return 0; 34 }
反转I am a boy 为boy a am I
1 //反转I am a boy 为boy a am I 2 /* 3 #include<iostream> 4 #include <string.h> 5 #include <cstdio> 6 using namespace std; 7 8 void RS(char*bp, char *ep) 9 { 10 while (bp<ep) 11 { 12 //char temp = *bp; 13 //*bp = *ep; 14 //*ep = temp; 15 16 swap(*ep, *bp); 17 bp++; 18 ep--; 19 } 20 } 21 char *Reverse(char *s) 22 { 23 int len = strlen(s); 24 char *es = s + len - 1; 25 RS(s, es); 26 27 char *p1 = s; 28 char *p2 = s; 29 while (*p2 != ' ') 30 { 31 while (*p2 != ' ' && *p2 != ' ') 32 { 33 p2++; 34 } 35 36 RS(p1, p2 - 1); 37 if (*p2 == ' '&& *p2 != ' ') 38 { 39 p2++; 40 p1 = p2; 41 } 42 } 43 return s; 44 } 45 int main() 46 { 47 char str[500]; 48 //getchar(); 49 gets_s(str); 50 cout << Reverse(str) << endl; 51 system("pause"); 52 return 0; 53 } 54 */