洛谷p2249c语言
时间: 2023-12-02 11:41:32 浏览: 119
洛谷p2249是一道关于二分查找的题目,要求在一个已经排好序的数组中查找给定的数,并输出其下标。下面是C语言的参考代码:
```c
#include <stdio.h>
int n, m, q, a[1000005]; //全局变量
int find(int x) //二分查找
{
int l = 1, r = n;
while (l < r)
{
int mid = (l + r) / 2;
if (a[mid] >= x)
r = mid;
else
l = mid + 1;
}
if (a[r] == x)
return r;
else
return -1;
}
int main()
{
int i;
scanf("%d %d", &n, &m); //读入
for (i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
}
for (i = 0; i < m; i++)
{
scanf("%d", &q);
int ans = find(q);
printf("%d ", ans);
}
return 0;
}
```
该代码首先读入数组的长度n和需要查找的数的个数m,然后读入数组a的元素。接着,对于每个需要查找的数q,调用find函数进行二分查找,并输出其下标。如果找不到,则输出-1。
阅读全文