C語言匹配標記演算法迴圈統計資料

2021-10-22 23:13:13 字數 1180 閱讀 8165

最近做《cp

rime

rplu

s》《c primer plus》

《cprim

erpl

us》第七章的課後習題,做到習題六的時候看到了匹配標記演算法的應用,覺得很好很實用,開一篇部落格記錄一下。

題目是這樣的:

7 - 6

目標編寫乙個程式讀取輸入,讀到 # 停止,報告 ei 出現的次數。

輸入輸出樣例:

按照我原先的想法,我可能會這樣寫:

if

(ch==

'e'&&

++ch==

'i')

但是,對於這類問題,還可以運用匹配標記演算法進行改進。

**如下:

#include

intmain

(void

)/* 匹配標記為 1 表明前乙個字元e已經匹配 ,

此時 i匹配則計數,並

清除部分匹配標記。*/

break

;default

: halfpair =0;

/* 無論字元e 是否匹配,字元非 e,i

均可以清空部分匹配標記*/}}

printf

("\ntotally exist %d \'ei\' in all char!\n"

,counter)

;printf

("done\n");

return0;

}

這種匹配標記演算法最經典的案例即是識別素數,通過isp

rime

isprime

isprim

e為0或者1來判斷下一步進入**。

for

(int i = datum;i >

1;i--

)/* 可以被1 或其本身之外的數整除,

表示prime為 0 退出素數判別迴圈。*/}if

(is_prime ==1)

/* 依據素數標記 判別區間內數是否列印*/

}

有趣!有趣!

資料結構 串的模式匹配演算法 C語言

1 思路 從主串s s0s1s2s3 sn 1 的第乙個字元開始與子串t t0t1t2 tm 1 的第個字元進行比較,若相等,則繼續比較後續字元 否則從主串s的第 個字元開始重新與子串t的第乙個字元進行比較,若相等,則繼續比較後續字元 否則從主串s的第三個字元開始重新與子串t的第乙個字元進行比較 如...

資料結構 BF演算法 普通模式匹配演算法 及C語言實現

1.判斷兩個串之間是否存在主串與子串的關係,這個過程稱為串的模式匹配。在串的模式匹配過程,子串 t 通常被叫做 模式串 2.普通的模式匹配 bf 演算法 判斷兩個串是否存在子串與主串的關係,最直接的演算法就是拿著模式串,去和主串從頭到尾一一比對,這就是 bf 演算法的實現思想。將提供的模式串 例如 ...

演算法設計與分析 1 1 統計數字問題(C語言版)

問題描述 一本書的頁碼從自然數1開始順序編碼直到自然數n。書的頁碼 按照通常的習慣編排,乙個頁碼內都不包含多餘的前導數字0.例如,第6頁用數字6表示,而不是06或006等 數字計數問題要求給定書的總頁碼n,計算出書的全部頁碼中分別用到多少次數字0,1,9.給定表示書的總頁碼的十進位制數n。變成計算書...