感觉这个是个语文题 疯狂
我的理解(不知道对不对,我也没做过)
三条是依次来的
1. 首先zoj是ac的 这个最简单 就是死的
2. 第二条,凡是xzojx的都可以ac 其中x可以是N个'o' 或者为空;
这个要注意的是前后都是x 所以符合这一条的ac字符串,前后的o的个数一定得相同
如果不同的话,比如oozojo就不符合这一条
其实这一条包含了第一条,也就是o的个数为0的情况就是单纯的zoj了
3. 这个在第二条基础上扩展
azbjc是前提 如果把2中的看成一个集合,同时符合3的也看成一个集合,那么azbjc必须是2或3中的一个元素。
在此基础上azbojac也是ac的
azbjc=>azbojac
做的改变 azb不变加一个o,j不变,加一个a,结尾c不变
而abc同样只能由o组成
这样综合起来,可以ac的有几个特点
首先必须包含zoj三个字符,三个都得有 缺一不可。而起z j 两种有且只能有一次
其次如果要符合第二条,那么zj中间有且只有一个o z前和j后的o的个数相同
第三,如果要符合第三条,这个比较麻烦一些,可以找一下规律
符合第二条的中间zj中间有且只有一个o 那么计算zj之间o的个数oi_in_zj-1就是做过2->3扩展的次数(每次增加一个o),j后面是增加过oi_in_zj-1次数a之后得到的, 所以应该有o_after_j=(oi_in_zj - 1) * o_before_z + o_before_z(这里加上了一个,因为最原始的会是一个azoja形式)
即o_after_j=oi_in_zj * o_before_z (o_before_z>=0, oi_in_zj >0)
这个应该就是最终的公式了 符合这一条的都AC 其他的WA
对给定的字符串(只包含'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,z后面只能是一个或多个o,并且oj要一起出现,oj前没有或有一个以上的o。这样的字符串都能AC