35 条题解
-
0PowderHan LV 10 @ 2016-10-25 13:01:21
经典递归?但是有点死板了,没有考虑更优解了,只是单纯为了递归OTZ
-
02016-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); }
-
02009-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 有效耗时:0ms100题~纪念
(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. -
02009-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
-
02009-10-06 18:03:01@
注意区分字母大写O和数字0
注意区分字母大写O和数字0
注意区分字母大写O和数字0 -
02009-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. -
02009-09-06 15:21:13@
哎。。我们学校的教材上一模一样的题目。。
第一次多输了一行.. -
02009-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 -
02009-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 有效耗时:0msvar 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.
简单模拟 -
02009-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. -
02009-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
太~~~~~~ -
02009-08-09 11:44:12@
如对本题有疑问可以参看我的题解:http://xujieqi.blog.hexun.com/35722312_d.html
-
02009-08-04 00:46:02@
太猥琐了~~
-
02009-08-03 13:29:53@
还好的一个题目 。。。。没有马上想到 自己画了下5
-
02009-07-25 23:41:01@
推啊推啊推啊。。。。。。
-
02009-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*OO',st);
writeln('step ',j+3,':','O*O*O*O',st);
end. -
02009-07-19 08:21:54@
WS 的题。。。
-
02009-07-14 20:22:43@
猥琐题
提交了N次 -
02009-07-13 22:43:21@
为什么同样的程序考试的时候我错了一个点.................
-
02009-07-13 21:57:47@
第一次,裸广搜,挂掉……
第二次,加了个哈希表优化,还是挂掉……
后来又试图剪枝若干次,仍然挂掉……
最后发现竟然……………………
无话可讲(一头撞死在豆腐上)PS:思路:类似递推找规律,从4以后都可以由前面推得。如5变4:
OOOOO***|**__
OOOO__**|*0
OOOO**|*__0
后面都是类似推法(其实是一样的)所以递推一下就好了,最后到4直接把样例输出,把位添满