2010浙大: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

思路:找规律,字符串必须满足这个形式:azbjc(a,b,c分别代表若干个o),其中|b|>1且|a|*|b|==|c|,||代表o的个数
 1 import java.util.*;
 2 import static java.lang.System.*;
 3 
 4 public class Main{
 5     static Scanner in = new Scanner(System.in);
 6     
 7     public static void main(String[] args)
 8     {
 9         String s;
10         while(in.hasNext())
11         {
12             s=in.next();
13             int nz=0,posz=0;
14             for(int i=0;i<s.length();i++)
15             {
16                 if(s.charAt(i)=='z')
17                 {
18                     nz++;
19                     posz=i;
20                 }
21             }
22             if(nz!=1)
23             {
24                 out.println("Wrong Answer");
25                 continue;
26             }
27             
28             int nj=0,posj=0;
29             for(int i=0;i<s.length();i++)
30             {
31                 if(s.charAt(i)=='j')
32                 {
33                     nj++;
34                     posj=i;
35                 }
36             }
37             if(nj!=1)
38             {
39                 out.println("Wrong Answer");
40                 continue;
41             }
42             if(posj<posz)
43             {
44                 out.println("Wrong Answer");
45                 continue;
46             }
47             
48             
49             int a=0,b=0,c=0;
50             for(int i=0;i<posz;i++)
51             {
52                 if(s.charAt(i)=='o')
53                     a++;
54             }
55             for(int i=posz+1;i<posj;i++)
56             {
57                 if(s.charAt(i)=='o')
58                     b++;
59             }
60             for(int i=posj+1;i<s.length();i++)
61             {
62                 if(s.charAt(i)=='o')
63                     c++;
64             }
65             if(a+b+c+nz+nj==s.length()&&b>0)
66             {
67                 if(a*b==c)
68                     out.println("Accepted");
69                 else
70                     out.println("Wrong Answer");
71             }
72             else
73                 out.println("Wrong Answer");
74         }    
75     }
76 }
原文地址:https://www.cnblogs.com/program-ccc/p/5322524.html