poj2250 最长上升子序列 + 输出

时间:2023-03-09 08:22:16
poj2250 最长上升子序列 + 输出
 //Accepted    208 KB    0 ms
 //最长公共上升子序列+输出
 //dp
 //输出时用的递归输出,注意条件判断
 #include <cstdio>
 #include <cstring>
 #include <iostream>
 using namespace std;
 ;
 ;
 char s1[imax_n][imax_stringlen];
 char s2[imax_n][imax_stringlen];
 int dp[imax_n][imax_n];
 int n1,n2;
 int max(int a,int b)
 {
     return a>b?a:b;
 }
 void Dp()
 {
     memset(dp,,sizeof(dp));
     ;i<=n1;i++)
     {
         ;j<=n2;j++)
         {
             dp[i][j]=max(dp[i-][j],dp[i][j-]);
             )
             dp[i][j]=max(dp[i][j],dp[i-][j-]+);
         }
     }
 }
 void output(int i,int j)
 {
     ) return ;
     ][j]==dp[i][j])
     {
         output(i-,j);
         return ;
     }
     ]==dp[i][j])
     {
         output(i,j-);
         return ;
     }
     ][j-]+==dp[i][j])
     {
         output(i-,j-);
         )
         {
             printf("%s",s1[i]);
             return ;
         }
         else
         {
             printf(" %s",s1[i]);
             return ;
         }
     }
     return ;
 }
 int main()
 {
     ])!=EOF)
     {
         ;
         k++;
         ]!='#')
         k++;
         n1=k-;
         k=;
         ]!='#')
         k++;
         n2=k-;
         Dp();
         output(n1,n2);
         printf("\n");
     }
     ;
 }