判定回文串

2021-06-26 15:23:51 字數 1304 閱讀 7257

time limit: 1000ms memory limit: 65536k

輸入一串字元(長度小於100),判斷該串字元是否是回文串(正序讀與逆序讀內容相同)。

輸入一串字元(長度小於100)。

若該串字元是回文串輸出「yes",否則輸出」no「。

asdfgfdsa

yes

使用遞迴的必需條件

可以通過遞迴呼叫來縮小問題規模,且新問題與原問題有著相同的形式

存在一種簡單情境,可以使遞迴在簡單情境下退出

一般對遞迴思想的介紹,都是說將大問題分解為乙個個小問題。本人覺得,帶著「如何將問題規模縮少」的思想 比 「將大問題分解為乙個個小問題」 的思想要更好地編寫遞迴程式。

避免常見的錯誤

檢驗遞迴實現是不是以檢查簡單情景開始。在幾乎所有情況中,遞迴函式都開始於關鍵字if。如果你的函式不是這樣,那麼應該仔細檢查程式並確信知道自己在做什麼

正確地解決了簡單情景了嗎?在遞迴程式中很多bug都是起源於簡單情景的不正確解決。如果簡單情景是錯誤的,那麼對更複雜問題的遞迴解決將會繼承相同的錯誤

遞迴分解使問題更加簡單了嗎?遞迴的作用在於,隨著問題解決的進行,它將變得越來越就簡單。即每一次遞迴呼叫中,引數值將會越來越小

簡化的過程是不是逐漸地達到了簡單情景,或者是不是遺漏了一些可能性?常見的乙個錯誤就是沒有將全部情況的簡單情景測試都包括其中,這些情況可能作為遞迴分解的結果而產生出來。簡單說:你需要正確地將所有的簡單情景分析出來

函式中的遞迴呼叫是不是表示了在形式上和初始問題真的完全相同的子問題?當使用遞迴分解問題時,關鍵在於子問題形式的同一性。如果遞迴呼叫改變了問題的本性,或者違反了乙個初始化的假設,那麼全部過程就被破環

當使用對遞迴跳躍的信任時,遞迴子問題的解決方案是否對初始問題提供了乙個完整的解決方案?將乙個問題分解為遞迴子問題僅僅是遞迴過程的一部分,一旦子問題得到了解決,那麼也必須能夠將他們重新組裝從而得到全部的答案

簡單的遞迴入門

#include #include #include using namespace std;

int fun(int low, int high, char *str, int length)

int main()

回文串判定

time limit 1000ms memory limit 65536k 輸入一串字元 長度小於100 判斷該串字元是否是回文串 正序讀與逆序讀內容相同 輸入一串字元 長度小於100 若該串字元是回文串輸出 yes 否則輸出 no asdfgfdsa yes include include inc...

回文串判定

輸入一串字元 長度小於100 判斷該串字元是否是回文串 正序讀與逆序讀內容相同 輸入一串字元 長度小於100 若該串字元是回文串輸出 yes 否則輸出 no asdfgfdsa yes include include include include using namespace std const...

1524 回文串判定

problem description 輸入一串字元 長度小於100 判斷該串字元是否是回文串 正序讀與逆序讀內容相同 input 輸入一串字元 長度小於100 output 若該串字元是回文串輸出 yes 否則輸出 no example input asdfgfdsa example output...