| ||||||||||
| 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 | |||||||||
Why WA? 大牛请进! 我用的是PascalProgram PKU_1080;
Const
c: Array['1'..'5', '1'..'5'] Of Integer = ((5, -1, -2, -1, -3),
(-1, 5, -3, -2, -4),
(-2, -3, 5, -2, -2),
(-1, -2, -2, 5, -1),
(-3, -4, -2, -1, 0));
Var
n, i, k, l1, l2, l: Integer;
s1, s2, s: String;
a: Array[1..111, 1..111] Of Longint;
Procedure Calc(x, y: Integer);
Var
Max1, Max2: Longint;
Begin
If (x = l1 + 1) Then Begin
If (y = l2 + 1) Then Begin
a[x, y] := 0;
Exit;
End Else Begin
a[x, y] := -MaxInt;
Exit;
End;
End;
If (y > l2) Then Begin
a[x, y] := -MaxInt;
Exit;
End;
If (a[x + 1, y] = -1) Then Calc(x + 1, y);
If (a[x + 1, y + 1] = -1) Then Calc(x + 1, y + 1);
Max1 := a[x + 1, y] + c[s1[x], '5'];
Max2 := a[x + 1, y + 1] + c[s1[x], s2[y]];
If (Max1 > Max2) Then a[x, y] := Max1 Else a[x, y] := Max2;
End;
Begin
Assign(Input, 'Input.txt');
Reset(Input);
Readln(n);
For i:=1 To n Do Begin
Read(l1);
Readln(s1);
Delete(s1, 1, 1);
Delete(s1, l1 + 1, Length(s1) - l1);
Fillchar(a, Sizeof(a), $FF);
For l:=1 To l1 Do
Case s1[l] Of
'A': s1[l] := '1';
'C': s1[l] := '2';
'G': s1[l] := '3';
'T': s1[l] := '4';
' ': s1[l] := '5';
End;
Read(l2);
Readln(s2);
Delete(s2, 1, 1);
Delete(s2, l2 + 1, Length(s2) - l2);
For l:=1 To l2 Do
Case s2[l] Of
'A': s2[l] := '1';
'C': s2[l] := '2';
'G': s2[l] := '3';
'T': s2[l] := '4';
' ': s2[l] := '5';
End;
If (l1 < l2) Then Begin
l := l1;
l1 := l2;
l2 := l;
s := s1;
s1 := s2;
s2 := s;
End;
Calc(1, 1);
Writeln(a[1, 1]);
End;
Close(Input);
End.
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator