本文主要是介绍(白书训练计划)UVa 11572 Unique Snowflakes(窗口滑动法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目地址:UVa 11572
这种方法以前接触过,定义两个指针,不断从左向右滑动,判断指针内的是否符合要求。
这个题为了能快速判断是否有这个数,可以用STL中的set。
代码如下:
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <queue>
#include <map>
#include <set>
#include <algorithm>using namespace std;
int a[1100000];
int main()
{int t, n, l, r, i, max1;scanf("%d",&t);while(t--){scanf("%d",&n);max1=-1;for(i=0;i<n;i++){scanf("%d",&a[i]);}l=r=0;set<int>q;while(r!=n){while(q.count(a[r])){q.erase(a[l++]);}q.insert(a[r++]);if(max1<r-l)max1=r-l;}printf("%d\n",max1);}return 0;
}
这篇关于(白书训练计划)UVa 11572 Unique Snowflakes(窗口滑动法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!