超级无语 的 LCS,,,

超级无语。。。

这么简单的题我可以WA 那么久

真的就是没AC 的命

好啦

首先,,一般来说

如果让字符串从第一位开始 ,是很容易写的,且不易错::

输入的时候  while(scanf("%s%s",sz1+1,sz2+1)!=EOF)

result[i][j] = 0                            i=0 or j=0

result[i][j] = result[i-1][j-1]                 Xi= =Yj

result[i][j] = MAX(result[i-1][j], result[i][j-1])  Xi! =Yj

 

但是如果是从0位开始的呢, 初始化得时候要注意点::。。而不要单独的两个判断就赋值 0 或1 因为 ans [i][j]是表示字符从A从0到i与 B从0到j 之间的最大值,,OK ,

 if(a[0]==b[0])ans[0][0]=1;
 else ans[0][0]=0;
 for( i = 1; i < m;i ++ )
 { 
  if(a[0] == b[i]) ans[0][i] =1;
  else ans[0][i]=ans[0][i-1];
 }
 for( i = 1; i < n;i ++ )
 { 
  if(a[i] == b[0]) ans[i][0] =1;
  else ans[i][0]=ans[i-1][0];
 }

 

 

posted @ 2010-04-21 17:31  吴豆豆  阅读(116)  评论(0编辑  收藏  举报