题目意思简单,模型就是排序,查找是否有该数字,有则输出位置,没有输出提示。
具体用到了C++ STL的两个函数模板一个是sort、一个是lower_bound,lower_bound(begin, end, v);
lower_bound与strchr类似,但它使用的是迭代器begin与end返回的是大于等于v的最小数所在的迭代器,
使用该模板函数需要注意的问题是,必须是针对已经排序好得数字,具体代码如下。
1 #include <cstdio>
2 #include <algorithm>
3
4 using namespace std;
5 const int maxn = 10000;
6
7
8 int main() {
9
10 int n, q, x, a[maxn], kase = 0;
11 while (scanf("%d%d", &n, &q) == 2 && n) {
12
13 for (int i = 0; i < n; i++) scanf("%d", &a[i]);
14 sort(a, a+n);
15 printf("CASE# %d:\n", ++kase);
16 while (q--) {
17
18 scanf("%d", &x);
19 int p = lower_bound(a, a+n, x) - a;
20 if (a[p] == x) printf("%d found at %d\n", x, p + 1);
21 else printf("%d not found\n",x);
22
23 }
24 }
25 return 0;
26 }