FBI树
pascal吧
全部回复
仅看楼主
level 1
扶摇天- 楼主
var
   i,j,k,m,n:longint;
   tree:array[1..10000] of char;
   treel,treer:array[1..10000] of longint;
   s:string;
procedure print(k:longint);
begin
   if k=0 then exit;
   print(treel[k]); print(treer[k]);
   write(tree[k]);
end;
begin
   assign(input,'fbi.in');
   assign(output,'fbi.out');
   reset(input);
   rewrite(output);
   readln(n);
   fillchar(tree,sizeof(tree),0);
   fillchar(treel,sizeof(treel),0);
   fillchar(treer,sizeof(treer),0);
   m:=1;
   for i:=1 to n do m:=m*2;
   readln(s); close(input);
   if n=0 then
     begin
       if s='1' then writeln('I') else writeln('B');
       close(output);
       halt;
     end;
   for i:=m to m*2-1 do
     begin
      if s[i-m+1]='1' then tree[i]:='I' else tree[i]:='B';
      treel[i]:=0; treer[i]:=0;
     end;
   for i:=m-1 downto 1 do
     begin
       treel[i]:=i*2; treer[i]:=i*2+1;
       s:=tree[treel[i]]+tree[treer[i]];
       if (s[1]='F')or(s[2]='F') then tree[i]:='F'
         else
           begin
             if s[1]=s[2] then if s[1]='I' then tree[i]:='I' else tree[i]:='B';
             if s[1]<>s[2] then tree[i]:='F';
           end;
     end;
   print(1);
   close(output);
end.
N=9或N=10时,后面的字母都是B,求教
2010年11月14日 10点11分 1
level 1
这样问,怎么木有人回答呢。。
2014年09月16日 08点09分 2
1