洛谷P1308 統計單詞數

2021-09-28 00:18:44 字數 1192 閱讀 3687

??我太難了我太菜

思路主要來自這個排在第一的高讚回答,這個答主寫了兩種方法,第一種一般人學不來,但是第二種比較好理解,做了那個例題之後,順著這種思路就解了這道題。

主要過程就是:

獲取輸入

統一大小寫

然後是最關鍵的統計單詞數

統計單詞數的思路如下:

(1)用到的變數:

count 用來記錄有幾個匹配的單詞

state = 0 表示當前指向的目的字串的位置是空格,=1表示是字元

index 指向源字串的第index個字元

flag = 0 表示字元匹配失敗 ,=1 表示匹配成功

first 用來記錄第一次匹配到的單詞首字母的位置

先用目的字串的第乙個字元來初始化state,還有flag。

然後迴圈遍歷目的字串的每乙個字元(除0號位的),如果當前是空格且前一位是字元時,就可以根據flag和index的結果來判斷上乙個詞的匹配是否成功。記得每次掃過乙個詞遇到第乙個空格時把index重新指向源字串的0號位。

如果當前是字元並且前一位是空格,說明是乙個詞的第一位,如果第一位都和源字串的第一位不匹配,置flag為0,否則為1。如果當前是字元並且前一位也是字元,就根據flag的情況判斷之前匹配的結果,如果之前都匹配上了,這一位繼續匹配,如果之前就沒有匹配上,那麼就不用做什麼。

特別注意,迴圈完之後,要判斷一下最後的flag是不是1,因為可能是字元結尾,這樣就沒有包括在迴圈裡面。所以要加乙個判斷。

#include

#include

#include

#include

using

namespace std;

void

strlower

(char

* a)}}

intmain()

else

}for

(int i =

1; a[i]

; i++)}

} index =0;

}else

else

}//當前是字元,之前是字元

else

else}}

}}if(flag ==1)

if(count ==0)

else

return0;

}

看了一些大佬解法覺得自己簡直弱爆了,指標也不會orz

洛谷P1308 統計單詞數

基本思路 1.讀入字串 2.轉化大小寫 3.查詢空格並提取字串 4.比較 實現過程中需注意的細節 1.需用getline整行讀入,因為cin讀入到空格時會停止。注意 使用getline用鍵盤輸入字串末會有空格,但使用測試資料不會出現空格 2.為了方便提取最後乙個單詞,讀入結束後在字串最後新增乙個空格...

洛谷 P1308 統計單詞數

第一題那個isbn那個死活過不了,我下了in和out的資料看了也是一模一樣,無奈。這個是過了的。處理的思路和實驗十二 2018 d.實驗10 9 指標陣列高階有點像,用兩個指標來確定單詞。include intmatchignorecase char char 不區分大小寫的檢測函式 intmain...

洛谷 P1308 統計單詞數 總結

寫這道題的時候思路變了好幾次,也卡了好久,最終想到一種比較適合像我這樣的初學者理解的一種解法。大概思路 大概思路就是比較單詞和句子,如果有一樣的就記錄次數和第一次出現的位置。儲存輸入的單詞和句子 c include include char word 20 sen 1000000 寫外面空間大 in...