35 条题解

  • 0
    @ 2016-10-25 13:01:21

    经典递归?但是有点死板了,没有考虑更优解了,只是单纯为了递归OTZ

  • 0
    @ 2016-08-29 19:39:51
    #include<iostream>
    using namespace std;
    
    int n,st,sp;
    char c[1001];
    
    void print()
    {
        int i;
        cout<<"step "<<st<<':';
        for (i=1;i<=2*n+2;i++) cout<<c[i];
        cout<<endl;
        st++;
    }
    
    void init(int n)
    {
        int i;
        st=0;
        sp=2*n+1;
        for (i=1;i<=n;i++) c[i]='O';
        for (i=n+1;i<=2*n;i++) c[i]='*';
        c[2*n+1]='_';c[2*n+2]='_';
        print();
    }
    
    void move(int k)
    {
        int j;
        for (j=0;j<=1;j++) 
        {
           c[sp+j]=c[k+j];
           c[k+j]='_';
        }
        sp=k;
        print();
    }
    void mv(int n)
    {
        int i,k;
        if (n==4)
        {
            move(4); move(8); move(2); move(7); move(1);
            }
        else
        {
            move(n); move(2*n-1); mv(n-1);
            }
    }
    int main()
    {
        cin>>n;
        init(n);
        mv(n);
    }
    
  • 0
    @ 2009-11-01 10:30:49

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    100题~纪念

    (PS:居然是这么H2O的题……)

    0ms H2O题 递推 当n=4时把样例打出去就AC了

    附上代码

    Var

    tot,i,j,k,n,n1:Longint;

    s,s1:ansistring;

    Begin

    Readln(n);

    n1:=n;

    s:='';

    For i:=1 to n Do s:=s+'O';

    For i:=1 to n Do s:=s+'*';

    s:=s+'__';

    tot:=0;

    If n4 Then Begin

    Writeln('step ',tot,':',s);

    Inc(tot);

    End;

    While n>4 Do Begin

    s[2*n+2]:='*';

    s[2*n+1]:='O';

    s[n]:='_';

    s[n+1]:='_';

    Writeln('step ',tot,':',s);

    Inc(tot);

    s[2*n]:='_';

    s[2*n-1]:='_';

    s[n]:='*';

    s[n+1]:='*';

    Writeln('step ',tot,':',s);

    Inc(tot);

    Dec(n);

    End;

    s1:=copy(s,11,2*(n1+2)-10);

    Writeln('step ',tot,':','OOO__***|O*',s1);

    Inc(tot);

    Writeln('step ',tot,':','OOO*O***',s1);

    Inc(tot);

    Writeln('step ',tot,':','O
    *O**OO*',s1);

    Inc(tot);

    Writeln('step ',tot,':','O*O*O*O*',s1);

    Inc(tot);

    Writeln('step ',tot,':','
    O*O*O*O*',s1);

    End.

  • 0
    @ 2009-10-08 14:05:15

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    递推

    把4以上的变成4

    OOOOO***|**__

    OOOO__**|*0

    OOOO**|*__0

    再按样例输出4

  • 0
    @ 2009-10-06 18:03:01

    注意区分字母大写O和数字0

    注意区分字母大写O和数字0

    注意区分字母大写O和数字0

  • 0
    @ 2009-09-21 16:09:40

    program pppp1562;

    var s:array[1..9000] of char;

    a:array[1..5] of string;

    i,j,k,l,m,n,step,sum:longint;

    t:char;

    begin

    readln(n);

    for i:=1 to n do begin s[i]:='O';s[n+i]:='*';end;

    s[2*n+1]:='_';s[2*n+2]:='_';l:=2*n+2;

    write('step 0:');for i:=1 to l do write(s[i]); writeln;

    while n>4 do begin

    t:=s[2*n+1];s[2*n+1]:=s[n];s[n]:=t;

    t:=s[2*n+2];s[2*n+2]:=s[n+1];s[n+1]:=t;

    inc(step);

    write('step ',step,':');

    for i:=1 to l do write(s[i]);writeln;

    t:=s[2*n-1];s[2*n-1]:=s[n];s[n]:=t;

    t:=s[2*n];s[2*n]:=s[n+1];s[n+1]:=t;

    inc(step);

    write('step ',step,':');

    for i:=1 to l do write(s[i]);writeln; dec(n);

    end;

    a[1]:='OOO__***|O*';

    a[2]:='OOO*O***';

    a[3]:='O
    *O**OO*';

    a[4]:='O*O*O*O*';

    a[5]:='
    O*O*O*O*';

    for i:=1 to 5 do

    begin write('step ',step+i,':');

    write(a[i]);for j:=11 to l do write(s[j]); writeln;

    end;

    end.

  • 0
    @ 2009-09-06 15:21:13

    哎。。我们学校的教材上一模一样的题目。。

    第一次多输了一行..

  • 0
    @ 2009-09-03 23:07:49

    我是沙茶

    比赛的时候真就没想出来怎么回事....结果后来老师出练习题又遇到这题...结果一下就想出来了.....短路了......

    典型递推.....

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

    编译通过...

    ├ 测试数据 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-08-28 16:25:46

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    var a:array[0..1000]of char;

    i,m,n,j,r:longint;

    begin

    readln(n);

    for i:=1 to n do a[i]:='O';

    for i:=1 to n do a:='*';

    a[2*n+1]:='_';

    a[2*n+2]:='_';

    write('step 0:');

    for i:=1 to 2*n+2 do write(a[i]);

    writeln;

    m:=2*n;

    for i:=1 to n-4 do

    begin

    a[m+1]:=a[m div 2];

    a[m+2]:=a[m div 2+1];

    a[m div 2]:='_';

    a[m div 2+1]:='_';

    write('step ',2*i-1,':');

    for j:=1 to 2*n+2 do write(a[j]);

    writeln;

    a[m div 2]:=a[m];

    a[m div 2+1]:=a[m-1];

    a[m-1]:='_';

    a[m]:='_';

    write('step ',2*i,':');

    for j:=1 to 2*n+2 do write(a[j]);

    writeln;

    m:=m-2;

    end;

    i:=(n-4)*2+1;

    write('step ',i,':OOO__***|');

    for j:=1 to n-3 do write('O*');

    writeln;

    inc(i);

    write('step ',i,':OOO*O***');

    for j:=1 to n-4 do write('O*');

    writeln;

    inc(i);

    write('step ',i,':O
    *O**OO*');

    for j:=1 to n-4 do write('O*');

    writeln;

    inc(i);

    write('step ',i,':O*O*O*__');

    for j:=1 to n-3 do write('O*');

    writeln;

    inc(i);

    write('step ',i,':__');

    for j:=1 to n do write('O*');

    writeln;

    end.

    简单模拟

  • 0
    @ 2009-08-11 12:47:54

    var

    s,ans:string;

    n,total,i,x:longint;

    begin

    readln(n);

    for i:=1 to n do

    s:=s + 'O';

    for i:=1 to n do

    s:=s + '*';

    s:=s + '__';

    x:=n;

    writeln('step ',total,':',s);

    inc(total);

    while x > 4 do

    begin

    s[x]:='_'; s[x+1]:='_'; s[2*x+1]:='O'; s[2*x+2]:='*';

    writeln('step ',total,':',s);

    inc(total);

    s[2*x]:='_'; s[2*x-1]:='_'; s[x]:='*'; s[x+1]:='*';

    dec(x);

    writeln('step ',total,':',s);

    inc(total);

    end;

    ans:=copy(s,11,(n-4)*2);

    writeln('step ',total,':OOO__***|O*'+ans); inc(total);

    writeln('step ',total,':OOO*O***'+ans); inc(total);

    writeln('step ',total,':O
    *O**OO*'+ans); inc(total);

    writeln('step ',total,':O*O*O*O*'+ans); inc(total);

    writeln('step ',total,':
    O*O*O*O*'+ans); inc(total);

    end.

  • 0
    @ 2009-08-09 12:42:47

    鄙视下,题目中的O是英文字母,刚开始以为是“零”,交了之后挂了,改成字母就AC了

    编译通过...

    ├ 测试数据 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-08-09 11:44:12

    如对本题有疑问可以参看我的题解:http://xujieqi.blog.hexun.com/35722312_d.html

  • 0
    @ 2009-08-04 00:46:02

    太猥琐了~~

  • 0
    @ 2009-08-03 13:29:53

    还好的一个题目 。。。。没有马上想到 自己画了下5

  • 0
    @ 2009-07-25 23:41:01

    推啊推啊推啊。。。。。。

  • 0
    @ 2009-07-19 18:00:26

    秒杀专用

    program tt;

    var i,j,n,m:integer;

    c:array[1..210]of char;

    st:string;

    procedure jh(a,b:integer);

    var k1,k2:char;

    begin

    k1:=c[a]; k2:=c[a+1];

    c[a]:=c; c[a+1]:=c;

    c:=k1; c:=k2;

    end;

    begin

    readln(n);

    for i:=1 to n do c[i]:='O';

    for i:=n+1 to 2*n do c[i]:='*';

    for i:=2*n+1 to 2*n+2 do c[i]:='_';

    write('step ',0,':');

    for i:=1 to 2*n+2 do write(c[i]); writeln;

    j:=1;

    for i:=n downto 4 do begin

    jh(i,2*i+1);

    write('step ',j,':');

    for m:=1 to 2*n+2 do write(c[m]); writeln;

    j:=j+1;

    if i 4 then begin

    jh(i,2*i-1);

    write('step ',j,':');

    for m:=1 to 2*n+2 do write(c[m]); writeln;

    j:=j+1; end;

    end;

    st:='*';

    for i:=1 to n-4 do st:=st+'O*';

    writeln('step ',j,':','OOO*O**__',st);

    writeln('step ',j+1,':','O__*O*OO',st);

    writeln('step ',j+2,':','O*O*O
    O',st);

    writeln('step ',j+3,':','
    O*O*O*O',st);

    end.

  • 0
    @ 2009-07-19 08:21:54

    WS 的题。。。

  • 0
    @ 2009-07-14 20:22:43

    猥琐题

    提交了N次

  • 0
    @ 2009-07-13 22:43:21

    为什么同样的程序考试的时候我错了一个点.................

  • 0
    @ 2009-07-13 21:57:47

    第一次,裸广搜,挂掉……

    第二次,加了个哈希表优化,还是挂掉……

    后来又试图剪枝若干次,仍然挂掉……

    最后发现竟然……………………

    无话可讲(一头撞死在豆腐上)

    PS:思路:类似递推找规律,从4以后都可以由前面推得。如5变4:

    OOOOO***|**__

    OOOO__**|*0

    OOOO**|*__0

    后面都是类似推法(其实是一样的)所以递推一下就好了,最后到4直接把样例输出,把位添满

信息

ID
1562
难度
4
分类
其他 | 构造其他 | 数学 点击显示
标签
递交数
1090
已通过
461
通过率
42%
被复制
3
上传者