COJ 1078 最长公共子序列

来源:互联网 发布:toread知乎 编辑:程序博客网 时间:2024/06/05 11:37

#include <cstdio>#include <cstring>#include <list>#include <iterator>#include <algorithm>#include <iostream>using namespace std;class N{public:int data;bool in;N(){data = -1;in = false;}};list<N> s;list<N>::iterator it;int main(){int n, m, k;N temp;while(scanf("%d%d", &n, &m) != EOF){s.clear();for(int i = 0; i < n; i++){if(i == 0){for(int j = 0; j < m; j++){scanf("%d", &k);temp.data = k;temp.in = false;s.push_back(temp);}}else{int p = 0;int *x = new int[m];for(int j = 0; j < m; j++)scanf("%d", &x[j]);for(it = s.begin(); it != s.end(); it++){for(int j = p; j < m; j++){if(x[j] == (*it).data){(*it).in = true;p = j+1;break;}}}for(it = s.begin(); it != s.end(); it++){if((*it).in){(*it).in = false;}else{s.erase(it);}}}}printf("%d\n", s.size());}return 0;}

使用动态规划即可解决


0 0