• 九度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
    ****************************************************************/


    编程算法爱好者。
  • 相关阅读:
    决策模型(一):不确定型决策法
    Redis系列(二):Redis的数据类型及命令操作
    Redis系列(一):Redis的简介与安装
    java中传值方式的个人理解
    理解主从设备模式(Master-Slave)
    基于ubuntu16.04部署IBM开源区块链项目-弹珠资产管理(Marbles)
    基于ubuntu16.04快速构建Hyperledger Fabric网络
    fastjson 的使用总结
    简析淘宝网的六大质量属性
    软件架构师如何工作
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5084025.html
Copyright © 2020-2023  润新知