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