当前位置: 首页 > 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.dtcms.com/a/310313.html

相关文章:

  • nodejs最近开发过程中的总结
  • 【LeetCode】算法详解#11 ---相交链表
  • 智能Agent场景实战指南 Day 29:Agent市场趋势与前沿技术
  • 一篇文章读懂AI Agent(智能体)
  • spring boot 启动报错---java: 无法访问org.springframework.boot.SpringApplication 错误的类文件
  • 获取LLM 内部的结构信息和矩阵维度信息
  • LeetCode 热题100:206. 反转链表
  • 【AI问答】PromQL中interval和rate_interval的区别以及Grafana面板的配置建议
  • 从本地到云端:将Linux文件夹上传至GitHub仓库的完整指南
  • 动态爱心树
  • 商汤悟能具身智能平台让机器人「觉醒」
  • Mysql 实战问题处理速通
  • 《操作系统真象还原》 第五章 保护模式进阶
  • h5独立部署
  • Galaxea机器人由星海图人工智能科技有限公司研发的高性能仿人形机器人
  • 国内短剧CSP系统开发:技术架构与合规实践全解析
  • GESP2025年6月认证C++八级( 第三部分编程题(1)树上旅行)
  • 一体化伺服电机在自动焊接设备中的控制转台转动部分应用案例
  • 【文章素材】3dBackgroundBoxes(3D背景盒子组件)项目及文章思路
  • 【PHP 自动加载机制详解】
  • HCIA实验——2.EVE模拟器的安装【完成】
  • iOS企业签名掉签,iOS企业签名掉签了怎么办?
  • 书生浦语第五期L0G1000
  • 【算法】指数滑动滤波器
  • 算法篇----位运算
  • 基于SAMP算法OFDM系统信道估计
  • 学习笔记090——Ubuntu 中 UFW 防火墙的使用
  • 香港正式启动稳定币牌照制度!推动中国的人民币国际化?
  • 本地浏览器设置上网代理服务
  • Linux编程: 10、线程池与初识网络编程