//1022. Digital Library (30)
#include "stdafx.h"
//注意split函数的用法,即将一个字符串按照“ ”将其分开。
//算法思想什么的很简单,和其他学生成绩排序的一样,主要就是用stl的sort函数
//最后三个case老通不过,主要是不能够对结果建立一个结构体都保存起来,这样会超内存空间。
//正确做法是:每当输入一个测试用例直接处理进行输出就可以了。
#include <iostream>
#include <vector>
#include <algorithm>
#include <string.h>
using namespace std;
typedef struct Book
{
int id;
char title[85];
char author[85];
//vector<string> KeyWord;
vector<string> keyword;
char Publisher[85];
int year;
}Book;
//vector<Book> book;
Book book[10000];
bool cmp(Book b1, Book b2)
{
if (b1.id < b2.id)
{
return true;
}
return false;
}
//typedef struct Result
//{
// int index;
// char context[85];
// vector<int> id;
//}Result;
//
vector<Result> res;
//Result res[1000];
int main()
{
int N;
int i;
scanf("%d", &N);
char KeyWords[60];
for (i = 0;i<N;i++)
{
scanf("%d\n", &book[i].id);
gets(book[i].title);
gets(book[i].author);
gets(KeyWords);
//tmps = (tmp.KeyWords);
//处理keywords;
char *p;
p = strtok(KeyWords, " ");
while(p)
{
book[i].keyword.push_back(p);
p = strtok(NULL, " ");
}
gets(book[i].Publisher);
scanf("%d", &book[i].year);
}
sort(book, book+N, cmp);
int M;
int id;
int j, k;
char c[100];
scanf("%d", &M);
for (i = 0;i<M; i++)
{
/*cin >> id;*/
scanf("%d: ", &id);
gets(c);
bool mark = false;
printf("%d: %s\n", id, c);
//Result r;
//r.index = id;
//strcpy( r.context, c);
bool flag = true;
if (id == 1)
{
for (j = 0;j<N;j++)
{
if (strcmp(book[j].title, c) == 0)
{
printf("%07d\n", book[j].id);
flag = false;
}
}
}
else if(id == 2)
{
for (j = 0;j<N;j++)
{
if (strcmp(book[j].author, c) == 0)
{
printf("%07d\n", book[j].id);
flag = false;
}
}
}
else if(id == 3)
{
for (j = 0;j<N;j++)
{
Book tmp = book[j];
for (k = 0; k< (tmp.keyword).size();k++)
{
if (strcmp(book[j].keyword[k].c_str(), c)==0)
{
printf("%07d\n", book[j].id);
flag = false;
break;
}
}
}
}
else if(id == 4)
{
for (j = 0;j<N;j++)
{
if (strcmp(book[j].Publisher, c) == 0)
{
printf("%07d\n", book[j].id);
flag = false;
}
}
}
else if(id == 5)
{
for (j = 0;j<N;j++)
{
if (book[j].year == atoi(c))
{
flag = false;
printf("%07d\n", book[j].id);
}
}
}
if (flag == true)
{
printf("Not Found\n");
}
}
return 0;
}
PAT 1022. Digital Library (30)
最新推荐文章于 2017-02-02 23:57:27 发布