• HDU 2072 *单词数


    http://acm.hdu.edu.cn/showproblem.php?pid=2072

    Problem Description
    lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
     
    Input
    有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
     
    Output
    每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
     
    Sample Input
    you are my friend
    #
     
    Sample Output
    4
     
    题解:函数 A  用来判断两个单词是否相等,相等 return 0 ,不等 return 1;利用 for 循环把字符串中的空着找出来,两个空格之间的部分就是一个单词,把找出的单词存在 s 中,调用 A 函数 ,找出一句话中不同单词的数量
     
    代码:
    #include <bits/stdc++.h>
    
    using namespace std;
    
    const int maxn = 1e5+10;
    char s[100][100];
    char a[maxn];
    
    int A(int x,int y)//判断字符串是否相等 相等返回 0 ,不等返回 1
    {
        int cnt=0;
        int len1=strlen(s[x]);
        int len2=strlen(s[y]);
        if(len1==len2)
        {
            for(int i=0; i<len1; i++)
            {
                if(s[x][i]!=s[y][i])
                    return 1;
            }
            return 0;
        }
        return 1;
    }
    
    int main()
    {
        while(gets(a))//i 行
        {
            int ans=0;
            int n=0;
            if(a[0]=='#')
                break;
            int len=strlen(a);
            a[len]=' ';
            len++;
            a[len]='';
            for(int i=0; i<len; i++)
            {
                if(a[i]!=' ')
                    for(int j=i; j<len; j++)
                    {
                        if(a[j]!=' ')
                            continue;
                        else
                        {
                            n++;
                            for(int zzt=i; zzt<j; zzt++)
                            {
                                s[n][zzt-i]=a[zzt];
                            }
                            s[n][j-i]='';
                            i=j;
                            break;
                        }
                    }
            }
            //cout<<n<<endl;
            //for(int i=1;i<=n;i++)
            //cout<<s[i]<<" "<<endl;
            for(int i=1; i<=n; i++)
            {
                int add=1;
                for(int j=i-1; j>0; j--)
                {
                    add*=A(i,j);
                }
                if(add==1)
                    ans++;
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
    

      

  • 相关阅读:
    Thymeleaf
    JdbcTemplate
    submit提交判断
    C++经典排序算法的理解:冒泡排序和选择排序
    求二进制中1的个数
    记录一次读取hdfs文件时出现的问题java.net.ConnectException: Connection refused
    linux服务器间配置ssh免密连接
    psycopg2模块安装问题
    sklearn.tree.DecisionTreeClassifier 详细说明
    sklearn.neighbors.NNeighborsClassifier 详细说明
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/9248403.html
Copyright © 2020-2023  润新知