poj 2366 直接寻址法

来源:互联网 发布:如何绑定ip地址和mac 编辑:程序博客网 时间:2024/06/06 00:56

题意:有两个集合A , B 从A B 两个集合中各找出一个数字,看其和等不等于 10000.

思路:直接寻址法  自己枚举超时啊。。。  就是把第一个集合的位置确定,然后枚举第二个集合的数,每枚举一个数就能确定这个数字是不是满足条件,这样一个数字就不需要重复枚举多次。。。

原文地址 在依然博客里 POJ 基础题里。 依然的博客在我主页上有链接。

#include<iostream>using namespace std;int main() {    int pos[32800],neg[32800];    int N , M;    int num;    scanf("%d",&N);        memset(pos,0,sizeof(pos));        memset(neg,0,sizeof(neg));        while (N --) {            scanf("%d",&num);            if (num > 0) pos[num] = 1;            else neg[-num] = 1;        }        scanf("%d",&M);        bool flag = false;        while (M --) {            scanf("%d",&num);            num = 10000 - num;            if (num > 0 && pos[num]) flag = true;            else if (num <=0 && neg[-num]) flag = true;            if (flag) {                printf("YES\n");                break;                }        }        if (!flag) printf("NO\n");                //system("pause");   }