您的位置:首页 > 产品设计 > UI/UE

Uva11572-Unique Snowflakes

2013-08-15 21:53 369 查看
统计最长无公共元素子串:map 搞定
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <string>
#include <map>
using namespace std;
int n;
vector<int> st;
map<int,int> visit;
void LNRS_dp_hash_impro(vector<int> &arr, int size){
//memset(visit, -1, sizeof visit);

int maxlen = 1;
visit[arr[0]] = 1;
int curlen = 1;
int last_start = 0;

for(int i = 1; i < size; ++i){
if(visit[arr[i]] == 0){
++curlen;
//cout<<curlen<<"@@@@"<<endl;
visit[arr[i]] = i+1;
// cout<<visit[arr[i]]<<endl;
}else{
if(last_start <= visit[arr[i]]){
curlen = i - visit[arr[i]]+1;
//cout<<curlen<<"@@@!!!"<<endl;
last_start = visit[arr[i]] + 1;
visit[arr[i]] = i+1; // 更新最近重复位置
}else{
++curlen;
// cout<<curlen<<"####"<<endl;
visit[arr[i]] = i+1; // 更新最近重复位置
}
}
//  cout<<curlen<<endl;
if(curlen > maxlen){
maxlen = curlen;
}
}
cout<<maxlen<<endl;
}
int main(){
int ncase;
cin >> ncase;
while(ncase--){
visit.clear();
st.clear();
scanf("%d",&n);
for(int i = 0; i < n; i++){
int tmp;
scanf("%d",&tmp);
st.push_back(tmp);
}
LNRS_dp_hash_impro(st,n);

}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: