该题读取特征时需要每次都读入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;
}
}
京公网安备 11010502036488号