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這里就用上了還是很驚訝的2333,希望后面能更加靈活運用所學知識
最后這是DFS簡單介紹及題目的博客地址:https://www.cnblogs.com/xiangqi/p/10485211.html