该题读取特征时需要每次都读入x,y两个数字,两个数字组成二元组。每一帧的第一个数字代表有多少个这样的二元组,遍历即可。一行代表一帧,如果上一行的二元组在当前行也出现则为连续帧。用一个map来存储连续的次数,键为二元组,值为次数。如果为连续帧则次数加1,否则次数变为1。
#include <stdio.h> #include <iostream> #include <map> #include <set> using namespace std; int main() { map<pair<int,int>,int> pre_feature_map; int n; int m; cin >> n >> m; int max_cnt = 0; while(n--) { while(m--) { int num; cin >> num; map<pair<int,int>,int> cur_feature_map; for(int i=0;i<num;i++) { int x,y; cin >> x >> y; pair<int,int> feature(x,y); //之前的feature_map中能找到当前feature,则是连续的; if(pre_feature_map.count(feature)) { cur_feature_map[feature] = pre_feature_map[feature] + 1; }else { cur_feature_map[feature] = 1; } if(cur_feature_map[feature] > max_cnt) { max_cnt = cur_feature_map[feature]; } } pre_feature_map.swap(cur_feature_map); } cout << max_cnt << endl; } }