九度OJ刷题——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

这题主要是要弄清楚Z前o的个数a和z与j之间的o的个数的乘积等于j后面o的个数。
源代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main(){
    char s[1000];
    while(cin >> s){
        int a = 0, b = 0, c = 0, countZ = 0, countJ = 0;
        for(int i=0; i<1000; i++){
            if(s[i] == '\0') break;
            else if(s[i] == 'z') countZ ++;
            else if(s[i] == 'j') countJ ++;
            else if(countZ==0 && s[i]=='o') a ++;
            else if(countZ>0 && s[i]=='o' && countJ==0) b ++;
            else if(countZ>0 && s[i]=='o' && countJ>0) c ++;
        }
        if(countZ==1 && countJ==1 && b>0 && (a*b==c)) cout << "Accepted" << endl;
        else cout << "Wrong Answer" << endl;
    }
 
    return 0;
}

  

posted on   C_haos  阅读(235)  评论(0编辑  收藏  举报
编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示