交换

发布于 2019-04-02  884 次阅读


题目描述

给出字符串S和字符串T,现在你要把S的某一个字符和T的某一个字符交换,使得交换之后的S至少要有三个连续相同的字符,交换之后的T也要有三个连续相同的字符。问有多少种不同的交换方式。

输入

第一行,一个字符串S。S只含有‘R’、‘G’、‘B’三种字符,长度不超过50,不小于3。而且S任意两个相邻的字符都不相同。
第二行,一个字符串T。T只含有‘R’、‘G’、‘B’三种字符,长度不超过50,不小于3。而且T任意两个相邻的字符都不相同。

输出

一个整数,满足要求的不同交换方式的数量。

思路

暴力模拟

var
  a:array[1..3] of string=('RRR','GGG','BBB');
  i,j,k,n,m,x,y,l,l1:longint;
  s,st,q,p:string;
  f,fl:boolean;
begin
  assign(input,'a.in'); reset(input);
  assign(output,'a.out'); rewrite(output);
  readln(s);
  readln(st);
  l:=length(s);
  l1:=length(st);
  for i:=1 to l do
    for j:=1 to l1 do
      begin
        q:=s; p:=st;
        q[i]:=st[j];
        p[j]:=s[i];
        f:=false; fl:=false;
        for k:=1 to 3 do
          begin
            if pos(a[k],p)<>0 then f:=true;
            if pos(a[k],q)<>0 then fl:=true;
          end;
        if (f=true) and (fl=true) then inc(x);
      end;
  writeln(x);
end.
]]>