C語言 演算法小記(1)「縮排法」判斷回文數

2021-10-04 08:32:02 字數 933 閱讀 1371

判斷輸入字串是否為回文數。

回文數設n是一任意自然數。若將n的各位數字反向排列所得自然數n1與n相等,則稱n為一回文數。

if-else

do-while

while

概述:將字串首位末位數字進行比較,若兩數相同,則刪去首位和末位並繼續比較新數字的首末位直到中間數

步驟:1.得到數字

2.算出位數

3.迴圈比較前後數

(1)判斷現有數的位數

(2)利用pow使首位的位數擴大

(3)取首位

(4)%10取末位

(5)比較首末位

(6)判斷迴圈次數是否達到輸入位數的一半(奇數/2編譯器不計小數)

4.輸出結果

-2147483648~2147483647(int型)

將變數修改為long int 即可

#include

#include

intmain()

do d=a/

pow(

10,c-i)

;//前位縮排

d%=10

;//前數

a/=10

;}while

(b==d&&i;//檢查兩邊到中間是否相同

if(b!=d)

//中間數判斷

printf

("不是回文數");

else

if(i==k/2)

//i不夠大說明中間有數字不相等

printf

("是回文數");

else

printf

("不是回文數");

return0;

}

!此演算法相較於常見的「字串倒置法」效率低了很多,僅為新演算法嘗試,使用時需要注意效率要求。

輸入若為字母則輸出(不是回文數)

C語言 回文串判斷

time limit 1000ms memory limit 65536k 題型 程式設計題 語言 無限制 回文串是指乙個字串從左讀到右與從右讀到左是一樣的,現由鍵盤輸入一行字元 最多不超過80個字元,以回車結束 判斷能否通過去掉0個或1個字元,使得字串成為回文串,如果可以輸出y,否則輸出n 一行字...

C語言 判斷回文數

判斷乙個數是否為回文數,回文數就是它的數字反向排列所得的自然數與它的本身是相等的,比如,若n 12321,則稱它是乙個回文數。程式利用到乙個數字遍歷的for迴圈,將輸入的數字進行反向排列,再與原輸入的數字進行比較,如果相等則為回文數。如下 define crt secure no warnings ...

C 判斷回文串 中心擴散法

一種是暴力檢索 另外一種則是中心擴散法 暴力搜尋法 從字串的開始和末尾處標定乙個點後,依次向後向前檢索,並判斷前後檢索的字串是否相同 bool ispalindrome string s return true 中心擴散法 利用雙指標去線性掃瞄一遍 i,j 判斷是否回文。我們先預處理除所有的 rec...