演算法競賽入門經典 例題 3 4 回文串

2021-09-07 10:50:58 字數 829 閱讀 3818

輸入乙個字串。求出當中最長的回文子串。

子串的含義是:在原串中連續出現的字串片段。回文的含義是:正著看和倒著看同樣。如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以內。輸出輸出所有的回文子串,每個子串一行。子串...