分析:又是一个不是太难的题,但是仍可以收获不少东西,sort()的使用,lower_bound函数的使用;
本题的核心:先排序再检索
本题的核心:先排序再检索
代码如下:
#include <cstdio>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
#define maxn 10000
int main()
{
int v[maxn];
int n,m,b,tot=1;
while (scanf("%d%d",&n,&m)==2&&m&&n)
{
printf("CASE# %d:\n",tot++);
for (int i=0;i<n;i++)
scanf("%d",&v[i]);
sort(v,v+n);
for (int i=0;i<m;i++)
{
scanf("%d",&b);
int p=lower_bound(v,v+n,b)-v;
if (v[p]==b) printf("%d found at %d\n",b,p+1);
else printf("%d not found\n",b);
}
}
return 0;
}
本文介绍了一个简单的编程问题解决方案,核心步骤包括使用 C++ 的 sort() 函数进行数组排序,并利用 lower_bound 函数进行高效查找。通过具体示例代码,读者可以学习如何结合这两种方法来解决特定类型的数据检索问题。
1016

被折叠的 条评论
为什么被折叠?



