• 题目--统计一行文本的单词个数(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

  • 相关阅读:
    [ 低危 ] mt网CRLF
    mysql之字段的修改,添加、删除,多表关系(外键),单表详细操作(增删改)
    mysql 之编码配置、引擎介绍、字段操作、数据类型及约束条件
    Navicat Premium永久激活方式
    centos 用户名密码忘记了怎么办?
    并发编程总结
    初识mysql
    线程queue、线程进程池,协程
    python解释器
    线程全局修改、死锁、递归锁、信号量、GIL以及多进程和多线程的比较
  • 原文地址:https://www.cnblogs.com/xiangqi/p/10573623.html
Copyright © 2020-2023  润新知