当前位置: 首页 > >

收集雪花

发布时间:

//雪花数量n这个没有问题,用桶或者普通数组都可以,但是数据的大小是9次方,这个有点问题,如果是桶,
//空间爆了,那么怎么办, 哈希表来解决这个问题,不过这个有点麻烦,毕竟需要构造函数建表,还需要判重,
//实际使用的使用stl用个map就可以了,将数变成字符串跟int对应 这样桶就是n了?


//代码为转载
#include
using namespace std;
typedef long long ll;
const int maxn = 1e6+7;
map M;
int a[maxn];
int main()
{
? ? int n;
? ? scanf("%d",&n);
? ? for(int i=0;i? ? ? ? scanf("%d",&a[i]);
? ? int l,r,ans = 0;
? ? l = 0,r = 0;
? ? while(r
? ? ? ? if(!M[a[r]])///!M.count(a[r]),有问题
? ? ? ? ? ? M[a[r]] = 1;
? ? ? ? else{
? ? ? ? ? ? while(a[l] != a[r])
? ? ? ? ? ? ? ? M[a[l++]] = 0;
? ? ? ? ? ? l++;
? ? ? ? }
? ? ? ? //printf("%d-->%d
",l,r);
? ? ? ? //printf("----%d-%d-%d
",M[1],M[2],M[3]);
? ? ? ? ans = max(ans,r-l+1);
? ? ? ? r++;
? ? }
? ? printf("%d
",ans);
?
? ? return 0;
}
?



友情链接: