輸入乙個字串。求出當中最長的回文子串。
子串的含義是:在原串中連續出現的字串片段。回文的含義是:正著看和倒著看同樣。如abba和yyxyy。在推斷時,應該忽略全部標點符號和空格。且忽略大寫和小寫。但輸出應保持原樣(在回文串的首部和尾部不要輸出多餘字元)。輸入字串長度不超過5000,且占領單獨的一行。
應該輸出最長的回文串,假設有多個,輸出起始位置最靠左的。
例子輸入:confuciuss say:madam,i'm adam.
例子輸出:madam,i'm adam
#include #include #include #include #define maxn 5000 + 10
char buf[maxn], s[maxn];//int
int p[maxn];
int main(int argc, char *ar**)
} for(i = 0; i < m; i++)
//;}
for(j = 0; i-j>=0 && i+j+1max) //
}}
for(i = x; i <= y; i++)
printf("\n");//最後要加換行符
system("pause");
return 0;
}
總結:1 對字串預處理
2 ctype.h 或 c -'a'+'a'
3 兩種情況abc 或 abbc
4 fgets 最多maxn-1個字元。倒數第二個是'\n',最後乙個是'\0'
5 不推薦使用gets,存在緩衝區溢位漏洞
演算法入門 3 4回文
大致過程為 先預處理,將非字母字元去掉,並將所有大寫字母轉為小寫字母 然後從第二個字元開始作為中間元素查詢最長的回文,並記錄最長的長度和位置 難點是 輸出為原輸入字串的子串,這裡用的方法和作者的一樣,用陣列p記錄預處理後的每個字元在原字串的位置。如下 2014年6月24日23 16 08 inclu...
演算法競賽入門經典例題
7744問題 問題 輸出所有形如aabb的四位完全平方數 即前兩位數字相等,後兩位數字也相等 include include int main 開燈問題 include include define maxn 1010 int a maxn int main int n,k,first 1 mems...
34 回文子串
總時間限制 1000ms 記憶體限制 65536kb 描述 給定乙個字串,輸出所有長度至少為2的回文子串。回文子串即從左往右輸出和從右往左輸出結果是一樣的字串,比如 abba,cccdeedccc都是回文字串。輸入乙個字串,由字母或數字組成。長度500以內。輸出輸出所有的回文子串,每個子串一行。子串...