題目--統計一行文本的單詞個數(PTA預習題)


PTA預習題——統計一行文本的單詞個數

7-1 統計一行文本的單詞個數 (15 分)

本題目要求編寫程序統計一行字符中單詞的個數。所謂“單詞”是指連續不含空格的字符串,各單詞之間用空格分隔,空格數可以是多個。

輸入格式:

輸入給出一行字符。

輸出格式:

在一行中輸出單詞個數。

輸入樣例:

Let's go to room 209.

輸出樣例:

5   

 

 

這道題一開始覺得沒什么,后面沒看題目條件被坑了下,不過我發現了非常有意思的東西,仔細一看這道題不就是基本DFS的一道裸題嘛..用DFS可以很快很方便的寫出來..關於DFS我之前有篇博客已經簡單解釋過一次了,這道題也可以,基本思路就是每次檢驗到一個非空格,就進行一次DFS,比如“Let's go to room 209.”,一開始肯定檢測到的是L嘛,然后進行一次DFS(每進行一次DFS記錄單詞數的變量就加1,在自定義函數中將“Let's”全部變成了空格(檢測到這個單詞后面的第一個空格前的"s"字母為止),然后返回,同理之后檢測到了“g”,然后DFS將"go"變成空格,最后進行多少次DFS就是多少個單詞唄(通俗點就這樣講了)。

 

AC代碼:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4     string s;
 5 void dfs(int xb,int len)
 6 {
 7     for(int i = xb; i < len ; i++)
 8     if(s[i]!=' ')s[i]=' ';//將一個單詞全部“同化為空格”  9     else return;
10 }
11 int main ( int argc ,const char * argv[])
12 {
13     int count=0;
14     getline(cin,s);
15     int len = s.length();
16     for(int i = 0 ; i < len ; i++)
17         if(s[i]!=' '){ //檢測到第一個非空格,進行DFS 18             dfs(i,len);
19             count++;
20         }
21         cout<<count<<endl;
22     return 0;
23 }

 

這里可能大家沒看過的代碼就getline了,getline的詳細用法可以自行谷歌百度,簡單來講就是接受一行數據,包括空格.


感想:之前才學了下DFS這里就用上了還是很驚訝的2333,希望后面能更加靈活運用所學知識

 

 

最后這是DFS簡單介紹及題目的博客地址:https://www.cnblogs.com/xiangqi/p/10485211.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM