• 【洛谷1580】yyy loves Easter_Egg I(字符串处理题)


    点此看题面

    大致题意: 略。(一道模拟题,自己去看题面吧)

    几个字符数组函数

    纯粹是一道字符串处理题,就当是学了一下各种与字符数组相关的函数吧!

    (gets()):这个是比较常用的函数,就是读入一行的字符。

    (strlen()):求出字符数组的长度。

    (sscanf()):从一个字符数组中读入,用法与(scanf)类似。

    (strstr()):在一个字符数组中找到另一个字符数组第一次出现的位置,然后返回这个位置及其之后的字符。

    (strcmp()):比较两个字符数组是否有差异。

    (count()):后来才知道还有一个这么神奇的函数,统计一个字符在字符数组中出现的次数。我做的时候自己手写了一个。

    了解了这些函数,其实这道题就比较简单了。

    大致思路

    先读入第一行,用一个字符数组(target)存下第一个被(@)的人,并开一个变量(cnt)记录当前行数。

    接下来,每次读入一个字符数组,如果读完了,就输出"好队形"

    然后找出当前说话的人的名字,比较其与(target),若相同则输出"炸成功"

    接下来是判断这句话中存在的(@)个数是否为(1),不为(1)则输出"炸失败"

    然后判断被(@)的人是否为(target),若不是,也输出"炸失败"

    具体实现详见代码。

    代码

    #include<bits/stdc++.h>
    #define max(x,y) ((x)>(y)?(x):(y))
    #define min(x,y) ((x)<(y)?(x):(y))
    #define Gmax(x,y) (x<(y)&&(x=(y)))
    #define Gmin(x,y) (x>(y)&&(x=(y))) 
    #define abs(x) ((x)<0?-(x):(x))
    #define swap(x,y) (x^=y^=x^=y)
    #define uint unsigned int
    #define LL long long
    #define ull unsigned long long
    #define INF 1000000000
    #define N 1000 
    #define hl_AK_NOI true
    #define GetAt(s,t) (sscanf(strstr(s,"@"),"@yyy loves %s",t))//找到被@的对象
    using namespace std;
    char now[N+5],At[N+5],cur[N+5],target[N+5];
    inline bool check(char *s,int len)//判断字符数组中含@个数是否为1,其实可以用count()函数替代
    {
        register int i,tot=0;
        for(i=0;i<len;++i) if(!(s[i]^'@')&&tot++) return false;//如果出现次数大于1,返回false
        return tot;//如果出现次数为1,返回true;如果出现次数为0,返回false
    }
    int main()
    {
        register int cnt=1,len;
        gets(now),GetAt(now,target);//用target存下第一个被@的人
        while(hl_AK_NOI)
        {
            if(++cnt,gets(now),len=strlen(now),len<2) return printf("Unsuccessful @yyy loves %s attempt
    %d
    Good Queue Shape",target,cnt-1),0;//判断是否读完
            if(sscanf(now,"yyy loves %s",cur),!strcmp(cur,target)) return printf("Successful @yyy loves %s attempt",target),0;//比较当前说话的人与target
            if(!check(now,len)) return printf("Unsuccessful @yyy loves %s attempt
    %d
    yyy loves %s",target,cnt,cur),0;//判断这句话中存在的@个数是否为1
            if(GetAt(now,At),strcmp(At,target)) return printf("Unsuccessful @yyy loves %s attempt
    %d
    yyy loves %s",target,cnt,cur),0;//判断被@的人是否为target
        }
        return 0;
    }
    
  • 相关阅读:
    Spring boot 请求接口404
    Windows下安装Redis
    利用maven的profiles灵活的配置多环境
    各个JSON技术的比较
    常用工具软件
    Java方法 传值方式
    JVM内存模型
    spring-task解决定时问题
    quartz Cron表达式解读
    maven 常用命令
  • 原文地址:https://www.cnblogs.com/chenxiaoran666/p/Luogu1580.html
Copyright © 2020-2023  润新知