poj2366C语言二分查找
时间: 2023-11-23 10:57:03 浏览: 129
这道题目是要在两个数组中找出是否有两个数相加等于10000。下面是一个使用C语言二分查找的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
int a[50005];
int main()
{
int n, m, k, flag = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
sort(a, a + n);
scanf("%d", &m);
for (int i = 0; i < m; i++)
{
scanf("%d", &k);
if (binary_search(a, a + n, 10000 - k))
{
flag = 1;
}
}
if (flag == 1)
printf("YES\n");
else
printf("NO\n");
return 0;
}
```
这个例子中,我们首先输入了一个整数n,表示第一个数组的长度,然后输入n个整数,将它们存储在数组a中。接着,我们对数组a进行排序,以便后面使用二分查找。然后,我们输入一个整数m,表示第二个数组的长度,然后输入m个整数,将它们存储在变量k中。接下来,我们使用二分查找在数组a中查找是否存在一个数等于10000-k,如果存在,我们将flag设置为1。最后,我们根据flag的值输出YES或NO。
阅读全文