问题 4063 --查找图书

4063: 查找图书★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 345  解决: 226
[提交][状态][命题人:]

题目描述

临近期末了,Yhw同学为了期末考试不挂科,最近疯狂的往图书馆跑。Yhw为了避免花太多的时间在找书上面,便想设计一个找书的程序,可以帮助他快速的找出想要的书。

在一排书架上有nn<=10)本书,每本书都有对应的书名、编号(从左往右编号依次递增)和摆放的位置(最左边为第一本,然后是第二本……以此类推),输入想找的书的编号,程序能输出书的位置。

#include<iostream>
#include<cstdio>
using namespace std;
struct BOOK
{
	char name[20];
	int bianHao;
	int weiZhi;
}book[20];

int main()//对分查找 
{

	int n,i,j,middle,m,flag=0;
	cin>>n;
	for(i=0;i<n;i++)
	{
		cin>>book[i].name >>book[i].bianHao >>book[i].weiZhi ;//读入数据 
	}
	cin>>m;
	i=0;
	j=____(1)____;
	while(i<=j)
	{
		middle=(i+j)/2;//先找中间的书是否符合要求 
		if(_____(2)_____)
		{
			flag=1;
			break;
		}
		else if(book[middle].bianHao>m) j=_____(3)____;//查找区间前移 
		else i=middle+1;//查找区间后移 
	}
	if(____(4)____) cout<<book[middle].name <<' '<<book[middle].bianHao <<' '<<book[middle].weiZhi ;
	else cout<<"Can Not Found";
	return 0;
}

输入

第一行输入n,表示有n本书。接下来的n行,每行依次输入书名、编号、摆放的位置,最后一行输入要找的书的编号m

输出

要找的书的书名,编号和位置(中间空格隔开)。如果没有这本书,则输出Can Not Found.

样例输入
Copy
4
sanguoyanyi 1977 1
shuihuzhuan 2341 2
xiyouji 3455 3
hongloumeng 3467 4
3455
样例输出
Copy
xiyouji 3455 3

提示

来源

[提交][状态]