2 3 1 3 2 4 3 2 4 1
N Y
哈希表基础题:
#include<stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
#define M 10003
int hash[M];
int main ()
{
int t,n,m,i,j;
int flag;
scanf("%d",&t);
while(t--)
{
flag=0;
memset(hash,0,sizeof(hash));
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&m);
hash[m]=1;
if(flag==0)
{
for(j=1;j<m&&j<=n-m;j++) // 写成 m-j>0 && m+j<=n 就易懂了。这样才能保证下面使用hash数组时不越界。
{
if(hash[m-j]+hash[m+j]==1) // 两者只出现过一个
{
flag=1;
break;
}
}
}
}
if(flag) printf("Y\n");
else printf("N\n");
}
return 0;
}
hdu 3833 YY's new problem,布布扣,bubuko.com
原文地址:http://blog.csdn.net/fyxz1314/article/details/37818105