zoukankan      html  css  js  c++  java
  • 九度OJ 1006:ZOJ问题 (递归)

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:18621

    解决:3197

    题目描述:
    对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC。

    是否AC的规则如下:
    1. zoj能AC;
    2. 若字符串形式为xzojx,则也能AC,其中x可以是N个'o' 或者为空;
    3. 若azbjc 能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空;
    输入:
    输入包含多组测试用例,每行有一个只包含'z','o','j'三种字符的字符串,字符串长度小于等于1000。
    输出:
    对于给定的字符串,如果能AC则请输出字符串“Accepted”,否则请输出“Wrong Answer”。
    样例输入:
    zoj
    ozojo
    ozoojoo
    oozoojoooo
    zooj
    ozojo
    oooozojo
    zojoooo
    样例输出:
    Accepted
    Accepted
    Accepted
    Accepted
    Accepted
    Accepted
    Wrong Answer
    Wrong Answer
    来源:
    2010年浙江大学计算机及软件工程研究生机试真题

    思路:

    从规则2 3来看,很明显需要用递归来解,不算难,但是边界条件判断容易出错。

    我WA了几次才通过的。


    代码:

    #include <stdio.h>
     
    #define N 1000
     
    int main(void)
    {
        int i, a, b, c;
        char s[N+1];
     
        while (scanf("%s", s) != EOF)
        {
            a = b = c = 0;
            i = 0;
            while (s[i] == 'o')
            {
                i ++;
                a ++;
            }
            if (s[i] != 'z')
            {
                printf("Wrong Answer
    ");
                continue;
            }
            i++;
            while (s[i] == 'o')
            {
                i ++;
                b ++;
            }
            if (s[i] != 'j')
            {
                printf("Wrong Answer
    ");
                continue;
            }
            i++;
            while (s[i] == 'o')
            {
                i ++;
                c ++;
            }
            if (s[i] != '')
            {
                printf("Wrong Answer
    ");
                continue;
            }
     
            //if (c == a+a*(b-1) && b > 0)
            while (b > 1)
            {
                b --;
                c -= a;
            }
            if (a == c && a >= 0 && b == 1)
                printf("Accepted
    ");
            else
                printf("Wrong Answer
    ");
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1006
        User: liangrx06
        Language: C
        Result: Accepted
        Time:30 ms
        Memory:912 kb
    ****************************************************************/


    编程算法爱好者。
  • 相关阅读:
    HTTP 错误 404.2
    SQL Server 2008 R2如何开启数据库的远程连接(转)
    CSS中font-family:中文字体对应的英文名称
    15/18位身份证号码正则表达式(详细版)
    C#获取系统时间及时间格式
    C#正则表达式判断输入日期格式是否正确
    Linux查看机器负载
    模拟HTTP请求超时时间设置
    MySQL show命令的用法
    innodb事务隔离级别
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5084025.html
Copyright © 2011-2022 走看看