| ||||||||||
| 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 | |||||||||
我只想说太坑爹了!付AC代码!#include<stdio.h>
#include<string.h>
#define N 110
int p[N][N];
int fun(char obj1[][40], char obj2[][40], int k1, int k2)
{
int i, j;
int c[N][N];
for (i=1; i<k1; i++)
c[i][0] = 0;
for (i=1; i<k2; i++)
c[0][i] = 0;
c[0][0] = 0;
for (i=1; i<k1; i++)
for (j=1; j<k2; j++)
{
if (!strcmp(obj1[i], obj2[j]))
{
c[i][j] = c[i-1][j-1] + 1;
p[i][j] = 1;
}
else if (c[i-1][j] > c[i][j-1])
{
c[i][j] = c[i-1][j];
p[i][j] = 2;
}
else
{
c[i][j] = c[i][j-1];
p[i][j] = 3;
}
}
return c[k1-1][k2-1];
}
void output(char obj1[][40], int k1, int k2)
{
int i;
int a[N];
i = 0;
--k1;
--k2;
while (k1>=1 && k2>=1)
{
if (p[k1][k2] == 1)
{
a[i++] = k1;
k1--; k2--;
}
else if (p[k1][k2] == 2)
{
k1--;
}
else
{
k2--;
}
}
--i;
while (i)
{
printf("%s ", obj1[a[i--]]);
}
printf("%s\n\n", obj1[a[i]]);
return ;
}
int main()
{
char obj1[N][40], obj2[N][40];
int k1, k2;
while (fscanf(stdin, "%s", obj1[1]) != EOF)
{
k1 = 2;
fscanf(stdin, "%s", obj1[k1++]);
while (strcmp(obj1[k1-1], "#"))
{
fscanf(stdin, "%s", obj1[k1++]);
}
--k1;
k2 = 1;
fscanf(stdin, "%s", obj2[k2++]);
while (strcmp(obj2[k2-1], "#"))
{
fscanf(stdin, "%s", obj2[k2++]);
}
--k2;
fun(obj1, obj2, k1, k2);
output(obj1, k1, k2);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator