LCS的路径打印

 1 for(int i = 1; i <= m; i ++)
 2         for(int j = 1; j <= n; j ++)
 3             if(!strcmp(a[i], b[j])) 
 4                 {
 5                     f[i][j] = f[i-1][j-1] + 1;
 6                     p[i][j] = 1;//赋值
 7                 }
 8             else if(f[i-1][j]>f[i][j-1])
 9                         {
10                             f[i][j] = f[i-1][j];
11                             p[i][j] = 0;//赋值
12                         }
13                         else 
14                         {
15                             f[i][j] = f[i][j-1];
16                             p[i][j] = -1;//赋值
17                         }
 1 void print(int i , int j)//输出
 2 {
 3     if(!i || !j)
 4         return ;
 5     if(p[i][j] == 1)
 6     {
 7         print(i-1,j-1);
 8         if(flag)
 9       printf(" ");
10     else
11       flag = 1;
12     printf("%s", a[i]);
13     }
14     else if(p[i][j] == 0)
15                 print(i-1,j);
16                 else print(i,j-1);
17 }