题目1006:ZOJ问题

题目描述:

对给定的字符串(只包含‘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

#include <iostream>
#include <cstring>
#include <stdio.h>

using namespace std;

bool accept1(char str[])
{
    int i = 0;
    bool isZ = false;
    bool isO = false;
    bool isJ = false;
    while(str[i])
    {
        if(i == 0 && str[i] == 'z')
            isZ = true;
        if(i == 1 && str[i] == 'o')
            isO = true;
        if(i == 2 && str[i] == 'j')
            isJ = true;
        i++;
    }
    if(isZ && isO && isJ && i == 3)
        return true;
    else
        return false;
}
//xzojx
bool accept2(char str[])
{
    int i = 2;
    bool flag = false;
    if(str[0] && str[1])
    {
        while(str[i])
        {
            if(str[i] == 'j' && str[i - 1] == 'o' && str[i - 2] == 'z')
            {
                int cishu = i -2 ;
                bool is_equal = true;
                int j =0;
                for(; j < cishu; j++)
                {
                    if(str[j] == 'o' && str[i+1+j] == 'o')
                        continue;
                    else
                    {
                        is_equal = false;
                        break;
                    }
                }
                if(is_equal && !str[j+i+1])
                {
                    flag = true;
                    break;
                }
            }
            i++;
        }
    }
    return flag;

}
// azbojac  oozoojoooo
bool accept3(char str[])
{
    int i = 0;
    int a=0,b=0,c=0;
    int numZ =0,numJ=0;
    bool hasZ = false,hasO = false,hasJ = false;
    bool flag = false;

    while(str[i])
    {
        if(str[i] == 'z' )
        {
            numZ++;
            hasZ = true;
        }
        if(str[i] == 'j')
        {
            numJ++;
            hasJ = true;
        }

        if(!hasZ && str[i] == 'o')
            a++;
        if(hasZ && !hasJ && str[i] == 'o')
            b++;
        if(hasZ && hasJ && str[i] == 'o')
            c++;
        i++;
    }
    if(numJ == 1 && numZ == 1)
    {
        if(2*a == c && b >= 1)
            flag = true;
    }

    return flag;

}
int main()
{

    char str[1000];
    //string str;
    while(scanf("%s",str) != EOF)
    {
        if(accept1(str) || accept2(str) || accept3(str))
        {
            printf("%s\n","Accepted");
        } else
        {
            printf("%s\n","Wrong Answer");
        }
    }
}
时间: 2024-12-21 03:57:07

题目1006:ZOJ问题的相关文章

九度OJ 1006 ZOJ问题 (这题測试数据有问题)

题目1006:ZOJ问题 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:15725 解决:2647 题目描写叙述: 对给定的字符串(仅仅包括'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'三种字

九度oj 1006 ZOJ问题 2010年浙江大学计算机及软件工程研究生机试真题

题目1006:ZOJ问题 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:16244 解决:2742 题目描述: 对给定的字符串(只包含'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'三种字符的字符串,

九度OJ 1006 ZOJ

#include <iostream> #include <string> using namespace std; int getO(string str,int &start,char ch) { int count=0; for(;start<str.length();start++) { if(str[start] == 'o') { count++; } else if(str[start]==ch) { start++; return count; } e

2019年7月25日 shell练习--PAT题目1006:换个格式输出整数(失败案例)

让我们用字母 B 来表示“百”.字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<),换个格式来输出任一个不超过 3 位的正整数.例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”.3 个“十”.以及个位的 4. 输入格式: 每个测试输入包含 1 个测试用例,给出正整数 n(<). 输出格式: 每个测试用例的输出占一行,用规定的格式输出 n. 输入样例 1: 234 输出样例 1: BBSSS1234 输入样例 2: 23 输出样例 2: SS123 这

各大oj题目分类(转)

POJ题目分类 | POJ题目分类 | HDU题目分类 | ZOJ题目分类 | SOJ题目分类 | HOJ题目分类 | FOJ题目分类 | 模拟题: POJ1006POJ1008POJ1013POJ1016POJ1017POJ1169POJ1298POJ1326POJ1350POJ1363POJ1676POJ1786POJ1791POJ1835POJ1970POJ2317POJ2325POJ2390POJ1012POJ1082POJ1099POJ1114POJ1642POJ1677POJ1684

各大oj题目分类

PythonTip 在线编程 挑战python 博文 模式 问答 ACM 课堂 下载 吐槽 放松 About 搜索 欢迎您:SSYYGAM | 个人中心| 注销 ACM/ICPC专栏 各大OJ近期比赛列表 各大OJ题目分类 负责任的OJ搜索 POJ题目分类 | POJ题目分类 | HDU题目分类 | ZOJ题目分类 | SOJ题目分类 | HOJ题目分类 | FOJ题目分类 | 模拟题: POJ1006POJ1008POJ1013POJ1016POJ1017POJ1169POJ1298POJ13

ZOJ Problem Set - 3195 Design the city 【Tarjan离线LCA】

题目:ZOJ Problem Set - 3195 Design the city 题意:给出一个图,求三点的连起来的距离. 分析:分别求出三点中任意两点的距离 / 2  = ans AC代码: #include <iostream> #include <cstdio> #include <cstring> #include <vector> using namespace std; #define N 50010 #define M 20010 struc

ZOJ Problem Set - 3229 Shoot the Bullet 【有上下界网络流+流量输出】

题目:ZOJ Problem Set - 3229 Shoot the Bullet 分类:有源有汇有上下界网络流 题意:有 n 天和 m 个girls,然后每天给一部分girls拍照,每个girls 有拍照的下限,即最少要拍这么多张,然后每天有k个女孩拍照,摄影师最多可以拍num张,然后 k 个女该每天拍照数量值有上下限,然后问你有没有满足这样条件的给女孩拍照的最大方案,然后按照输入输出每天给女孩拍照的张数. 做这道题目推荐先做:这儿 分析:首先它让你判断能不能满足条件. 按照题目给出的条件很

ZOJ Problem Set - 3203 Light Bulb 【三分法】

题目:ZOJ Problem Set - 3203 Light Bulb 题意: 如图,有个人在地上走,然后他的影子可以投影到墙上或者地上,问影子最长是多少? 分析: 我们知道,三分法是解决一个凹或凸函数的极大极小值,发现这个影子从刚好投影到右下角开始便是一个凸函数,他的影子长度是先递增后递减的,所以可以用三分法. 三分法的原理: AC代码: #include <cstdio> #include <cstring> #include <vector> #include