Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
累死我了。。program double; var f1,f2:text; c:char; i,j:integer; a:array[1..9,0..4]of char; p:array[0..4,0..4,0..4,0..4,0..4,0..4,0..4,0..4,0..4]of boolean; f:array[0..4,0..4,0..4,0..4,0..4,0..4,0..4,0..4,0..4]of real; function dfs(x1,x2,x3,x4,x5,x6,x7,x8,x9:integer):real; var sum:real; k:integer; x:array[1..9]of integer; begin sum:=0; k:=0; if (x1=0)and(x2=0) and(x3=0)and(x4=0) and(x5=0)and(x6=0) and(x7=0)and(x8=0)and(x9=0) then begin f[x1,x2,x3,x4,x5,x6,x7,x8,x9]:=1; dfs:=1; exit; end; if not p[x1,x2,x3,x4,x5,x6,x7,x8,x9] then begin if (a[1,x1]=a[2,x2])and(x1>0)and(x2>0) then begin sum:=sum+dfs(x1-1,x2-1,x3,x4,x5,x6,x7,x8,x9); k:=k+1; end; if (a[1,x1]=a[3,x3])and(x1>0)and(x3>0) then begin sum:=sum+dfs(x1-1,x2,x3-1,x4,x5,x6,x7,x8,x9); k:=k+1; end; if (a[1,x1]=a[4,x4])and(x1>0)and(x4>0) then begin sum:=sum+dfs(x1-1,x2,x3,x4-1,x5,x6,x7,x8,x9); k:=k+1; end; if (a[1,x1]=a[5,x5])and(x1>0)and(x5>0) then begin sum:=sum+dfs(x1-1,x2,x3,x4,x5-1,x6,x7,x8,x9); k:=k+1; end; if (a[1,x1]=a[6,x6])and(x1>0)and(x6>0) then begin sum:=sum+dfs(x1-1,x2,x3,x4,x5,x6-1,x7,x8,x9); k:=k+1; end; if (a[1,x1]=a[7,x7])and(x1>0)and(x7>0) then begin sum:=sum+dfs(x1-1,x2,x3,x4,x5,x6,x7-1,x8,x9); k:=k+1; end; if (a[1,x1]=a[8,x8])and(x1>0)and(x8>0) then begin sum:=sum+dfs(x1-1,x2,x3,x4,x5,x6,x7,x8-1,x9); k:=k+1; end; if (a[1,x1]=a[9,x9])and(x1>0)and(x9>0) then begin sum:=sum+dfs(x1-1,x2,x3,x4,x5,x6,x7,x8,x9-1); k:=k+1; end; if (a[2,x2]=a[3,x3])and(x2>0)and(x3>0) then begin sum:=sum+dfs(x1,x2-1,x3-1,x4,x5,x6,x7,x8,x9); k:=k+1; end; if (a[2,x2]=a[4,x4])and(x2>0)and(x4>0) then begin sum:=sum+dfs(x1,x2-1,x3,x4-1,x5,x6,x7,x8,x9); k:=k+1; end; if (a[2,x2]=a[5,x5])and(x2>0)and(x5>0) then begin sum:=sum+dfs(x1,x2-1,x3,x4,x5-1,x6,x7,x8,x9); k:=k+1; end; if (a[2,x2]=a[6,x6])and(x2>0)and(x6>0) then begin sum:=sum+dfs(x1,x2-1,x3,x4,x5,x6-1,x7,x8,x9); k:=k+1; end; if (a[2,x2]=a[7,x7])and(x2>0)and(x7>0) then begin sum:=sum+dfs(x1,x2-1,x3,x4,x5,x6,x7-1,x8,x9); k:=k+1; end; if (a[2,x2]=a[8,x8])and(x2>0)and(x8>0) then begin sum:=sum+dfs(x1,x2-1,x3,x4,x5,x6,x7,x8-1,x9); k:=k+1; end; if (a[2,x2]=a[9,x9])and(x2>0)and(x9>0) then begin sum:=sum+dfs(x1,x2-1,x3,x4,x5,x6,x7,x8,x9-1); k:=k+1; end; if (a[3,x3]=a[4,x4])and(x3>0)and(x4>0) then begin sum:=sum+dfs(x1,x2,x3-1,x4-1,x5,x6,x7,x8,x9); k:=k+1; end; if (a[3,x3]=a[5,x5])and(x3>0)and(x5>0) then begin sum:=sum+dfs(x1,x2,x3-1,x4,x5-1,x6,x7,x8,x9); k:=k+1; end; if (a[3,x3]=a[6,x6])and(x3>0)and(x6>0) then begin sum:=sum+dfs(x1,x2,x3-1,x4,x5,x6-1,x7,x8,x9); k:=k+1; end; if (a[3,x3]=a[7,x7])and(x3>0)and(x7>0) then begin sum:=sum+dfs(x1,x2,x3-1,x4,x5,x6,x7-1,x8,x9); k:=k+1; end; if (a[3,x3]=a[8,x8])and(x3>0)and(x8>0) then begin sum:=sum+dfs(x1,x2,x3-1,x4,x5,x6,x7,x8-1,x9); k:=k+1; end; if (a[3,x3]=a[9,x9])and(x3>0)and(x9>0) then begin sum:=sum+dfs(x1,x2,x3-1,x4,x5,x6,x7,x8,x9-1); k:=k+1; end; if (a[4,x4]=a[5,x5])and(x4>0)and(x5>0) then begin sum:=sum+dfs(x1,x2,x3,x4-1,x5-1,x6,x7,x8,x9); k:=k+1; end; if (a[4,x4]=a[6,x6])and(x4>0)and(x6>0) then begin sum:=sum+dfs(x1,x2,x3,x4-1,x5,x6-1,x7,x8,x9); k:=k+1; end; if (a[4,x4]=a[7,x7])and(x4>0)and(x7>0) then begin sum:=sum+dfs(x1,x2,x3,x4-1,x5,x6,x7-1,x8,x9); k:=k+1; end; if (a[4,x4]=a[8,x8])and(x4>0)and(x8>0) then begin sum:=sum+dfs(x1,x2,x3,x4-1,x5,x6,x7,x8-1,x9); k:=k+1; end; if (a[4,x4]=a[9,x9])and(x4>0)and(x9>0) then begin sum:=sum+dfs(x1,x2,x3,x4-1,x5,x6,x7,x8,x9-1); k:=k+1; end; if (a[5,x5]=a[6,x6])and(x5>0)and(x6>0) then begin sum:=sum+dfs(x1,x2,x3,x4,x5-1,x6-1,x7,x8,x9); k:=k+1; end; if (a[5,x5]=a[7,x7])and(x5>0)and(x7>0) then begin sum:=sum+dfs(x1,x2,x3,x4,x5-1,x6,x7-1,x8,x9); k:=k+1; end; if (a[5,x5]=a[8,x8])and(x5>0)and(x8>0) then begin sum:=sum+dfs(x1,x2,x3,x4,x5-1,x6,x7,x8-1,x9); k:=k+1; end; if (a[5,x5]=a[9,x9])and(x5>0)and(x9>0) then begin sum:=sum+dfs(x1,x2,x3,x4,x5-1,x6,x7,x8,x9-1); k:=k+1; end; if (a[6,x6]=a[7,x7])and(x6>0)and(x7>0) then begin sum:=sum+dfs(x1,x2,x3,x4,x5,x6-1,x7-1,x8,x9); k:=k+1; end; if (a[6,x6]=a[8,x8])and(x6>0)and(x8>0) then begin sum:=sum+dfs(x1,x2,x3,x4,x5,x6-1,x7,x8-1,x9); k:=k+1; end; if (a[6,x6]=a[9,x9])and(x6>0)and(x9>0) then begin sum:=sum+dfs(x1,x2,x3,x4,x5,x6-1,x7,x8,x9-1); k:=k+1; end; if (a[7,x7]=a[8,x8])and(x7>0)and(x8>0) then begin sum:=sum+dfs(x1,x2,x3,x4,x5,x6,x7-1,x8-1,x9); k:=k+1; end; if (a[7,x7]=a[9,x9])and(x7>0)and(x9>0) then begin sum:=sum+dfs(x1,x2,x3,x4,x5,x6,x7-1,x8,x9-1); k:=k+1; end; if (a[8,x8]=a[9,x9])and(x8>0)and(x9>0) then begin sum:=sum+dfs(x1,x2,x3,x4,x5,x6,x7,x8-1,x9-1); k:=k+1; end; end else begin dfs:=f[x1,x2,x3,x4,x5,x6,x7,x8,x9]; exit; end; if k<>0 then f[x1,x2,x3,x4,x5,x6,x7,x8,x9]:=sum/k else f[x1,x2,x3,x4,x5,x6,x7,x8,x9]:=0; p[x1,x2,x3,x4,x5,x6,x7,x8,x9]:=true; dfs:=f[x1,x2,x3,x4,x5,x6,x7,x8,x9]; end; begin assign(f1,'double.in'); reset(f1); assign(f2,'double.out'); rewrite(f2); for i:=1 to 9 do begin for j:=1 to 4 do begin read(c); a[i,j]:=c; read(c); read(c); end; readln; end; writeln(dfs(4,4,4,4,4,4,4,4,4):0:6); end. Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator