不说了,汗颜
最长回文字串.cpp
1 #include<iostream> 2 #include<cstdio> 3 #include<string> 4 #include<stdlib.h> 5 6 using namespace std; 7 const int N = 5000; 8 int judge(char array[], int n, int m) 9 { 10 int i = n, j = n, k, o = n, p = n; 11 int sum = 0; 12 for (; i > 0 && o < N ; i--, o++) 13 { 14 while (array[i] > 122 || array[i] < 65) 15 { 16 i--; 17 } 18 while (array[o] > 122 || array[o] < 65) 19 { 20 o++; 21 } 22 if (array[i] == array[o]) 23 { 24 sum++; 25 } 26 else 27 { 28 if (m == 1) 29 { 30 for (k = i + 1; k < o ; k++) 31 { 32 cout << array[k]; 33 } 34 } 35 break; 36 } 37 } 38 for (; j > 0 && p < N; j--, p++) 39 { 40 while (array[j] > 122 || array[j] < 65) 41 { 42 j--; 43 } 44 while (array[p] > 122 || array[p] < 65) 45 { 46 p++; 47 } 48 if (array[j-1] == array[p]) 49 { 50 sum++; 51 } 52 else 53 { 54 if (m == 1) 55 { 56 for (k = j-1; k < p; k++) 57 { 58 cout << array[k]; 59 } 60 } 61 break; 62 } 63 } 64 return sum; 65 } 66 int main() 67 { 68 char array[N]; 69 int max = 0, po; 70 cin.getline(array,N); 71 int i, j = 0; 72 for (i = 0; i < strlen(array); i++) 73 { 74 if (judge(array, i, 0) != 0) 75 { 76 if (max < judge(array, i, 0)) 77 { 78 max = judge(array, i, 0); 79 po = i; 80 } 81 } 82 } 83 judge(array, po, 1); 84 system("pause"); 85 return 0; 86 }