| ||||||||||
| 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 | |||||||||
Re:思路对啊,为什么总WA,谁给指点一下,谢谢In Reply To:思路对啊,为什么总WA,谁给指点一下,谢谢 Posted by:bootshl at 2008-08-10 01:25:17 > #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
> #define MAX(a, b, c) (a > b ? a :b) > c ? (a > b ? a :b) : c
>
> int ctoi(char a);
> int value(char a, char b);
>
> int main(void)
> {
> int n, l1, l2, i, j, f[200][200], f1, f2, f3;
> char s1[100], s2[100];
> scanf("%d", &n);
> while (n--) {
> scanf("%d%s%d%s", &l1, s1 + 1, &l2, s2 + 1);
> memset(f, 0, sizeof(f));
> f[1][1] = 0;
> for (i = 2; i <= l1; i++)
> f[i][1] = f[i - 1][1] + value(s1[i], '-');
> for (j = 2; j <= l2; j++)
> f[1][j] = f[1][j - 1] + value('-', s2[j]);
> for (i = 1; i <= l1; i++)
> for (j = 1; j <= l2; j++) {
> if (s1[i] == s2[j])
> f[i][j] = f[i - 1][j - 1] + value(s1[i], s2[j]);
> else {
> f1 = f[i - 1][j] + value(s1[i], '-');
> f2 = f[i][j - 1] + value('-', s2[j]);
> f3 = f[i - 1][j - 1] + value(s1[i], s2[j]);
> f[i][j] = MAX(f1, f2, f3);
> }
> }
> printf("%d\n", f[l1][l2]);
> }
> return 0;
> }
>
> int value(char a, char b)
> {
> int dna[5][5] =
> {
> { 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}
> };
> return dna[ctoi(a)][ctoi(b)];
> }
>
>
> int ctoi(char a)
> {
> int b;
> if (a == 'A') b = 0;
> if (a == 'C') b = 1;
> if (a == 'G') b = 2;
> if (a == 'T') b = 3;
> if (a == '-') b = 4;
> return b;
> }
你打的表dna[4][4]置0我觉的是错的,应该置为一个大数
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator