首页 > 编程语言 > 详细

排序与检索,UVa 10474,(大理石在哪里)

时间:2020-09-26 09:43:31      阅读:47      评论:0      收藏:0      [点我收藏+]

题目:有n个大理石,每个大理石上写了一个非负整数,首先对其进行排序,然后回答q个问题,每个问题问是否有一个大理石上写着某个整数x,如是,则回答哪个大理石上写着x,排序后的大理石从左到右编号为1-n;//可以循环输入

  • 分析:
  • 第一步先进行排序,用algorithmi头文件中的sort进行排序,sort(aa,aa+n)//begin(),end();
  • 第二步:寻找写有数字x的大理石,可以用algorithmi头文件中的lower_bound()进行查找;
  • lower_bound的作用是“查找大于或者等于x的第一个位置”;
#include <cstdio>
#include <algorithm>
#include <sstream>

using namespace std;
const int maxn = 10000;
int main()
{
	int n, q, x, aa[maxn], k = 0;
	while (scanf_s("%d %d", &n, &q) == 2)
	{
		printf("CASE# %d:\n", ++k);
		for (int i = 0; i < n; i++)
		{
			scanf_s("%d", &aa[i]);
		}
		sort(aa, aa + n);//进行排序
		while (q--)
		{
			scanf_s("%d", &x);//寻找的数字
			int p = lower_bound(aa, aa + n, x) - aa;
			if (aa[p] == x) {
				printf("%d found at %d\n", x, p + 1);
			}
			else {
				printf("%d not found\n", x);
			}
		}
	}

	return 0;
}

排序与检索,UVa 10474,(大理石在哪里)

原文:https://www.cnblogs.com/lwyy1223-/p/13733043.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!