当前位置: 首页 > news >正文

PAT 1022 Digital Library

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
题目大意是输入N个图书信息,每一个图书信息包括id,title; author;key;publisher; year;然后输入M个询问,每次询问输入的是title; author;key;publisher; year其中一种,从N个图书信息中找到符合条件的,按id顺序输出符合条件的id。
模拟即可,有两点需要注意:
1.要注意id,title; author;key;publisher; year,最好都用字符串,有些还有字符串之间有空格,因此我们应该用getline(cin,s);来获取输入,而需要注意的是cin>>N;
cin>>M,会留下一个回车,我们需要一个字符串把这个回车给吞掉,否则会影响id,title; author;key;publisher; year;的输入。

     int N;cin>>N;string dummy;getline(cin, dummy);int M;cin>>M;string d1;getline(cin, d1);

2.当询问是key的时候,只需要图书信息中的key的某一部分满足询问的key即可。
因此:

           for(int i=0;i<N;i++){//int cnt=0;for(int j=0;j<book[i].key.size();j++){if(book[i].key[j]==' '){cnt=0;continue;}if(book[i].key[j]==s[cnt]){cnt++;}	if(cnt==s.size()){//匹配成功cout<<book[i].id<<endl;flag=1;break;}}}

进行一个字符串匹配。

#include <iostream>
#include <limits.h>
#include <cstring>
#include <queue>
#include <unordered_map>
#include <algorithm>
#include <cmath>
#include <vector>
#include <map>
using namespace std;
// 
int N;
struct node
{string id;string title;string author;string key;string publisher;string year;
}book[1005];
bool cmp(node a,node b)
{if(a.id<b.id){return true;}else{return false;}
}
bool flag;
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>N;string dummy;getline(cin, dummy);  // 吸收 N 后面的回车for(int i=0;i<N;i++){getline(cin,book[i].id);getline(cin,book[i].title);getline(cin,book[i].author);getline(cin,book[i].key);getline(cin,book[i].publisher);getline(cin,book[i].year);}sort(book,book+N,cmp); int M;cin>>M;string d1;getline(cin, d1);for(int i=1;i<=M;i++){string a;flag=0;getline(cin,a);string s;if(a[0]-'0'==1){for(int i=3;i<a.size();i++){s+=a[i];}cout<<"1: "<<s<<endl;//找数据中哪一个与它相同 for(int i=0;i<N;i++){if(book[i].title==s){//cout<<"1: "<<s<<endl;cout<<book[i].id<<endl;flag=1;}}}else if(a[0]-'0'==2){for(int i=3;i<a.size();i++){s+=a[i];}cout<<"2: "<<s<<endl;//找数据中哪一个与它相同 for(int i=0;i<N;i++){if(book[i].author==s){//cout<<"2: "<<s<<endl;cout<<book[i].id<<endl;flag=1;}}}else if(a[0]-'0'==3){for(int i=3;i<a.size();i++){s+=a[i];}//找数据中哪一个与它相同 cout<<"3: "<<s<<endl;for(int i=0;i<N;i++){//int cnt=0;for(int j=0;j<book[i].key.size();j++){if(book[i].key[j]==' '){cnt=0;continue;}if(book[i].key[j]==s[cnt]){cnt++;}	if(cnt==s.size()){//匹配成功cout<<book[i].id<<endl;flag=1;break;}}}}else if(a[0]-'0'==4){for(int i=3;i<a.size();i++){s+=a[i];}//找数据中哪一个与它相同cout<<"4: "<<s<<endl; for(int i=0;i<N;i++){if(book[i].publisher==s){//cout<<"4: "<<s<<endl;cout<<book[i].id<<endl;flag=1;}}}else{for(int i=3;i<a.size();i++){s+=a[i];}cout<<"5: "<<s<<endl;for(int i=0;i<N;i++){if(book[i].year==s){cout<<book[i].id<<endl;flag=1;}}} if(flag==0){cout<<"Not Found"<<endl;}}return 0;} 
http://www.lryc.cn/news/607044.html

相关文章:

  • 关于“PromptPilot” 之5 -标签词与标签动作的语言模型九宫格
  • HCLP--ospf综合实验
  • 神经网络----卷积层(Conv2D)
  • GitPython07-源码解读
  • 低通滤波器的原理以及作用
  • ctfshow_web签到题
  • 算法49. 字母异位词分组
  • 第11届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2020年5月30日真题
  • Pydantic模块学习
  • gis qgis验证 tif地图文件
  • 10年24倍的etf轮动策略复现,回测+实盘一体解决方案:backtrader的模块化策略模板,附python代码
  • 机器学习第二课之逻辑回归(二)LogisticRegression
  • Spring事件监听设计原理全面深入指南
  • 3D 管道如何实现流动的?
  • Java试题-选择题(3)
  • python简单操作达梦数据库
  • VUE2 学习笔记15 代理
  • Leetcode 10 java
  • Go语言中的盲点:竞态检测和互斥锁的错觉
  • 常见的网络攻击以及预防
  • C++ 构造函数语义学
  • Context API
  • 【AI论文】具备测试时扩散能力的深度研究者
  • win11怎么看本机ip地址?怎么查看代理端口?
  • leetcode 118. 杨辉三角 简单
  • 【C#学习Day14笔记】泛型、集合(数组列表Arraylist、列表list)与字典
  • 基于单片机汽车少儿安全预警系统
  • 118. 杨辉三角
  • 数据结构:在链表中查找(Searching in a Linked List)
  • [ java 网络 ] TPC与UDP协议