幸运字符串(ansistring)

幸运字符串(string)

【问题描述】

对于一个只包含0和1的字符串,如果A是幸运的,B也是幸运的,那么1AB1也是一个幸运的串。现在定义”0”是一个幸运字符串,请判断给定的字符串S是否是幸运的。

【输入格式】

第一行一个数字T,表示数据组数。

接下来T组数据,第一行字符串长度n,接下来一行一个只含01的字符串。

【输出格式】

T行,第i个串如果是幸运字符串那么输出”YES”,否则输出”NO”。

【样例输入】

3

4

1001

7

1100101

7

0110011

【样例输出】

YES

YES

NO

【数据范围】

      30%的数据满足n<=100;

50%的数据满足n<=300;

100%的数据满足n<=800,T<=10

 

未1A的原因,又没改ansistring


//string
var
   n,tt,i,j,now:longint;
   s:ansistring;
function sort(i,j:longint):boolean;
var
   k:longint;
begin







   if (i=j) then
   begin
      if s[i]='0' then exit(true)
      else exit(false);
   end;
 {
   if (s[i]='1') and (s[j]='1') then
   begin
      for k:=i+1 to j-2 do
         if (sort(i+1,k)) and (sort(k+1,j-1)) then exit(true);

   end;
 }
   exit(false);


end;
begin
   assign(input,'string.in');
   assign(output,'string.out');
   reset(input);
   rewrite(output);
   readln(tt);
   while (tt>0) do
   begin
      readln(n);
      readln(s);
      while (true) do
      begin
         i:=pos('1001',s);
         if (i=0) then break;
         delete(s,i,2);
         delete(s,i+1,1);
         dec(n,3);
      end;





      if (sort(1,n)) then writeln('YES')
      else writeln('NO');

      dec(tt);
   end;
   close(input);
   close(output);
end.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值