/ Vijos / 题库 / FBI树 /

题解

157 条题解

  • 0
    @ 2009-08-10 19:55:05

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    Program P1114;

    var a:array[0..1200] of integer;

    i,j,n,m:longint;

    s:ansistring;

    procedure print(t,s:longint);

    var i,j:longint;

    p0,p1:boolean;

    begin

    p0:=false; p1:=false;

    for i:=t to s do

    begin

    if a[i]=0 then p0:=true;

    if a[i]=1 then p1:=true;

    if p0 and p1 then begin write('F'); exit; end;

    end;

    if p0 then write('B');

    if p1 then write('I');

    end;

    procedure change(t,s:longint);

    begin

    if t>s then exit;

    if t

  • 0
    @ 2009-08-10 11:05:22

    要开ansistring啊。

    第一次:没开ansistring;

    第二次:提交后乱码,

    第三次:过了哈哈哈

  • 0
    @ 2009-08-06 00:08:17

    #include

    #include

    #include

    #include

    char a[5000];int n,m;

    typedef struct tree{

    char data;

    struct tree *left,*right;

    }NODE;

    NODE *head;

    void back(NODE *bt)

    {

    if(bt!=NULL){

    back(bt->left);

    back(bt->right);

    printf("%c",bt->data);

    }

    }

    NODE *crt(char hh[],int t)

    {

    if(t==0)return NULL;

    char p=hh[0],*i;int q=1,l;NODE bt;

    bt=(NODE
    )malloc(sizeof(NODE));

    for(i=hh,l=1;ldata='B';break;

    case'1':bt->data='I';break;

    case'2':bt->data='F';break;

    }

    t=t/2;

    bt->left=crt(hh,t);

    bt->right=crt(hh+t,t);

    return bt;

    }

    main()

    {

    scanf("%d\n",&n);

    n=2

  • 0
    @ 2009-08-03 09:07:28

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

  • 0
    @ 2009-07-31 13:09:26

    没啥好说的,连N=0也不用注意。。。

  • 0
    @ 2009-07-27 21:45:06

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    没啥好说的,注意N=0吧。。。

  • 0
    @ 2009-08-06 17:01:47

    read(s); // 只能这样读入

    为了读入s,WA了N次

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    var n:integer;

    s:ansistring;

    function whattype(l,r:integer):char;

    var i0,i1:integer;

    s1:ansistring;

    begin

    s1:=copy(s,l,r-l+1);

    i0:=pos('0',s1);

    i1:=pos('1',s1);

    if (i00)and(i10) then

    exit('F');

    if i00 then

    exit('B');

    if i10 then

    exit('I');

    end;

    procedure make(l,r:integer);

    begin

    if lr then

    begin

    if l

  • 0
    @ 2009-07-17 15:35:58

    注意特殊情况 忘写halt了。。。

  • 0
    @ 2009-05-29 22:08:28

    #include

    int n,fang[12]={1,2,4,8,16,32,64,128,256,512,1024,2048};

    char a[1025],c[2048];

    char pan(int x,int y)

    {

    int i=x;

    if(a[i]=='0')

    {

    while(a[i]=='0'&&iy)return 'B';

    return 'F';

    }

    while(a[i]=='1'&&iy)return 'I';

    return 'F';

    }

    void set(int x,int y,int k)

    {

    c[k]=pan(x,y);

    if(x==y)return;

    set(x,(x+y)/2,2*k);

    set((x+y)/2+1,y,2*k+1);

    }

    void postorder(int x)

    {

    if(x>=fang[n+1])return;

    postorder(2*x);

    postorder(2*x+1);

    printf("%c",c[x]);

    }

    int main()

    {

    int i,j;

    scanf("%d %s",&n,a);

    for(i=fang[n];i>0;i--)

    a[i]=a;

    set(1,fang[n],1);

    postorder(1);

    return 0;

    }

    秒杀水题

  • 0
    @ 2009-05-13 16:19:38

    program fbitree;

    var st:ansistring;

    a:array[1..4096] of char;

    flaga,flagb:boolean;

    i,n:integer;

    procedure find(s:ansistring);

    var sa,sb:ansistring;

    j:integer;

    begin

    flaga:=false;

    flagb:=false;

    for j:=1 to length(s) do

    if s[j]='0' then

    begin

    flaga:=true;

    break;

    end;

    for j:=1 to length(s) do

    if s[j]='1' then

    begin

    flagb:=true;

    break;

    end;

    if flaga and flagb then a[i]:='F';

    if flaga and (not(flagb)) then a[i]:='B';

    if (not(flaga)) and flagb then a[i]:='I';

    inc(i);

    sa:=copy(s,1,length(s)div 2);

    sb:=copy(s,length(s)div 2+1,length(s));

    if length(sa)>1 then find(sa);

    if length(sb)>1 then find(sb);

    end;

    procedure outit(x:integer);

    begin

    if x

  • 0
    @ 2009-03-31 20:21:52

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!

    !!!!!!!!!!!!!注意!!!!!!!!!!!!

    n可以是0

    要用ansistring!

  • 0
    @ 2009-03-05 22:15:45

    #include

    #include

    using namespace std;

    struct BTN{

    char data;

    int count;

    BTN *left;

    BTN *right;

    };

    void Init(BTN *& BT){

    BT=NULL;

    }

    void Orderrear(BTN * BT){

    if(BT!=NULL){

    Orderrear(BT->left);

    Orderrear(BT->right);

    coutcount=1;

    b[i]->left=b[i]->right=NULL;

    }

    for(int i=1;idata=='I'&& b[k2]->data=='B')||(b[k2]->data=='I'&& b[k1]->data=='B')){p->data='F';p->count=b[k1]->count+b[k2]->count;}

    if(b[k1]->data=='I'&& b[k2]->data=='I'){p->data='I';p->count=b[k1]->count+b[k2]->count;}

    if(b[k1]->data=='B'&& b[k2]->data=='B'){p->data='B';p->count=b[k1]->count+b[k2]->count;}

    if(b[k1]->data=='F'&& b[k2]->data=='F'){p->data='F';p->count=b[k1]->count+b[k2]->count;}

    if(((b[k1]->data=='I')&& (b[k2]->data=='F'))||((b[k2]->data=='I')&&(b[k1]->data=='F'))){p->data='F';p->count=b[k1]->count+b[k2]->count;}

    if(((b[k1]->data=='F')&& (b[k2]->data=='B'))||((b[k2]->data=='F')&&(b[k1]->data=='B'))){p->data='F';p->count=b[k1]->count+b[k2]->count;}

    p->left=b[k1];

    p->right=b[k2];

    b[k1]=p;

    b[k2]=NULL;

    }

    delete []b;

    return p;

    }

    char t[10000];

    int main(int argc, char *argv[])

    {

    BTN *f;

    Init(f);

    int n=1,k;

    cin>>k;

    if(k!=0){

    for(int i=1;i>b;

    for(int i=0;i>g;

    if(g=='1') cout

  • 0
    @ 2009-02-04 15:49:37

    庆祝第一次一次ac

    这个树不是树形数据结构,而是树形递归求解

    var

    n:integer;

    s:ansistring;

    procedure print(i,j,n:integer);

    var

    m:integer;

    t:ansistring;

    begin

    if n>=1 then

    begin

    m:=(j-i+1) shr 1+i-1;

    print(i,m,n-1);

    print(m+1,j,n-1);

    end;

    t:=copy(s,i,j-i+1);

    if pos('0',t)=0

    then write('I')

    else

    if pos('1',t)=0

    then write('B')

    else write('F');

    end;

    begin

    readln(n);

    readln(s);

    print(1,length(s),n);

    writeln;

    end.

  • 0
    @ 2009-02-03 10:02:52

    二分的题目嘛

  • 0
    @ 2009-02-02 22:40:21

    void print(~~)

    {

    if~~~

    printf(~~`~`~~);

    }

    void postorder(char *p)

    {

    postorder(左孩子);

    postorder(右孩子);

    print(~~);

    }

  • 0
    @ 2009-01-31 11:37:12

    编译通过...

    ├ 测试数据 01:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    我怎么打出个J?

  • 0
    @ 2009-10-11 08:15:23

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    var

    n:integer;

    str:ansistring;

    procedure fbi(str:ansistring);

    begin

    if length(str)1 then

    begin

    fbi(copy(str,1,length(str) div 2));

    fbi(copy(str,length(str)div 2+1,length(str) div 2))

    end;

    if pos('0',str)=0 then write('I') else

    if pos('1',str)=0 then write('B') else

    write('F');

    end;

    begin

    readln(n);

    readln(str);

    fbi(str);

    writeln;

    end.

  • 0
    @ 2008-12-02 19:06:35

    program FBI;

    var a:array[0..20,0..2000]of char;

    f:array[0..20]of integer;

    k:char;

    i,j,n,x,y:integer;

    procedure back(p,q:integer);

    begin

    if p

  • 0
    @ 2008-11-29 19:24:49

    题目名字有点误导...建树的话就麻烦了

  • 0
    @ 2008-11-13 21:27:04

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

信息

ID
1114
难度
3
分类
数据结构 | 点击显示
标签
递交数
4151
已通过
2216
通过率
53%
被复制
26
上传者