问题链接:UVA10474 Where is the Marble?。
题意简述:输入n个整数,代表大理石编号;再输入q个数(编号),问是否有这个编号的大理石,位置在哪里?
这个问题用C++语言编写程序,主要是为了练习使用STL的功能。
程序中,使用了算法库(algorithm)中的两个函数;使用sort()函数用于对数据排序,该函数的参数比C语言的同类函数简单,程序更加易于书写;使用函数lower_bound()查找元素,简单方便。
AC的C++语言程序如下:
/* UVA10474 Where is the Marble? */
#include <iostream>
#include <algorithm>
using namespace std;
#define MAXN 11000
int marble[MAXN];
int main()
{
int n, q, caseno=0, val;
while(scanf("%d%d", &n, &q) != EOF) {
if(n == 0 && q == 0)
break;
for(int i=0; i<n; i++)
scanf("%d", &marble[i]);
sort(marble, marble + n);
printf("CASE# %d:\n", ++caseno);
while(q--) {
scanf("%d", &val);
int no = lower_bound(marble, marble + n, val) - marble;
if(marble[no] == val)
printf("%d found at %d\n", val, no + 1);
else
printf("%d not found\n", val);
}
}
return 0;
}