| ||||||||||
| 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 | |||||||||
这个不是路径压缩。是滚动数组In Reply To:第一次自己做路径压缩~0MS~ Posted by:belljay at 2013-10-25 07:16:08 > #include<stdio.h>
> #include<string.h>
> #include<stdlib.h>
> #include<math.h>
> #include<float.h>
> #include<malloc.h>
> #include<time.h>
>
> int x[2][1000];
> char s1[1000], s2[1000];
>
> int max(int x, int y)
> {
> return x>y?x:y;
> }
>
> int main()
> {
> int len1, len2, i, j, n;
> while(scanf("%s %s",&s1,&s2)!= EOF)
> {
> memset(x,0,sizeof(x));
> len1 = strlen(s1);
> len2 = strlen(s2);
> n = max(len1, len2);
> for (i=0;i<len1;i++)
> {
> for (j=0;j<len2;j++)
> {
> if (s1[i] == s2[j])
> x[1][j+1] = x[0][j]+1;
> else
> x[1][j+1] = max(x[1][j], x[0][j+1]);
> }
> for (j=0;j<len2;j++)
> x[0][j+1]=x[1][j+1];
> }
> printf("%d\n",x[1][len2]);
> }
> }
>
> 把O(m*n)压缩到了O(n);其实这是最正常的路径压缩,这样少了好多内存~不过,压缩带来的后果就是会损失信息。
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator