最長回文子串:
當字串的長度比較小的時候:
attention:最好把陣列開在外面,如果開在main外面並且陣列太大,就會異常退出的。
//最長回文子串
#include #include#include#define maxn 5000+10
char buf[maxn],s[maxn];
int main()
}printf("%d\n",max);
for(int ix=x;ix<=y;ix++)
printf("%c",buf[a[ix]]);
printf("\n");
return 0;
}
當字串的長度比較大的時候,上面程式非常慢。
如果列舉回文串中間的位置i,然後不斷向外擴充套件,直到字元不同~~這樣更快!
//最長回文子串
#include #include#include#define maxn 5000+10
char buf[maxn],s[maxn];
int main()
}for(j=0;i-j>=0&&i+j+1max)
}}
printf("%d\n",max);
for(int ix=x;ix<=y;ix++)
printf("%c",buf[a[ix]]);
printf("\n");
return 0;
}
《演算法競賽入門經典》第三章習題3 4
題目名稱 計算器 題目描述 編寫程式,讀入一行恰好包含乙個加號 減號或乘號的表示式,輸出它的值。這個運算子保證是二元運算子,且兩個運算子均不超過100的非負整數。運算子和運算子可以緊挨著,也可以用乙個或多個空格 tab隔開。行首末尾均可以有空格。樣例輸入 1 1 樣例輸出 2 樣例輸入 2 5 樣例...
演算法競賽入門經典第三章 學習總結
1.scanf s a 不加 讀入乙個字串,不能讀入空格,tab,回車。gets s 可以識別空格,tab,回車。以上的函式均在末尾加 0 include include includeusing namespace std int main 2.char strchr const char s,c...
演算法入門經典第三章(上)
逆序輸出 讀入一些整數然後逆序輸出,將你所輸入的每個數字存入到陣列a maxn 中,然後利用for迴圈逆序輸出,輸入完了以後別忘了先按回車再按crtl z,強制輸出,要不然會無限輸入的2333.這段程式執行是這樣的 給你個例子 如果輸入12 33 55 89 則輸出 89 55 33 12.主要是a...