概述
2021.4.28 ???? 图书管理员 from 牛客网
o( ̄▽ ̄)ブ
show my code
#include<iostream>
#include<math.h>
using namespace std;
typedef struct stu_need{
int num;
int need;
}stu;
int main(){
int n,q,i,j;
cin>>n>>q;//输入书籍数量和借阅人数
int *book = new int[n];//开辟图书数组
stu *stuid = new stu[q];//开辟学生数组
int *res = new int[q];//存储最终结果
for(i=0;i<n;i++) cin>>book[i];//输入n个图书的id
for(j=0;j<q;j++) {
int t_book = 100000001; //用于比较的临时变量
cin>>stuid[j].num>>stuid[j].need; //输入借阅者信息
for(int h=0;h<n;h++){ //遍历书库
if((stuid[j].need==(book[h]%(int)pow(10,stuid[j].num)))&&book[h]<=t_book) //如果满足最后位的等于关系并且图书Id比临时变量小,就用当前的bookid替换临时变量
t_book = book[h];
}
if(t_book==100000001) res[j] = -1;//如果没找到,结果就是-1
else res[j] = t_book; //如果找到了,结果就是比较临时变量
}
for(int k = 0;k<q;k++){ //输出最终结果
cout<<res[k]<<endl;
}
delete []book;//手动释放空间,清除对象
delete []stuid;
delete []res;
return 0;
}
what behind my code
输入
依照题目的要求,需要输入图书馆已有书籍数量n以及n本书籍的编号,借阅读者的数量q、q位读者的编号长度以及各自的编号。因此可以定义一个stu的结构体来存储读者的信息,分别开辟book数组和stuid数组来存储图书和读者分别的测试信息。
typedef struct stu_need{
int num;
int need;
}stu;
int n,q,i,j;
cin>>n>>q;
int *book = new int[n];
stu *stuid = new stu[q];
int *res = new int[q];
for(i=0;i<n;i++) cin>>book[i];
for(j=0;j<q;j++) {
int t_book = 100000001;
cin>>stuid[j].num>>stuid[j].need;
处理
想到题目规定只要书籍的结尾数字是读者的需求数字就被算作读者的需求(bookid是1123,读者需求id是23这种),因为想到题目本身就给了读者需求数字的位数,因此对每输入一个读者,可以利用pow()函数对书库进行取余遍历,由于题目要求是最小的图书id输出,因此保存一个临时的比较变量,如果当前满足条件的图书id比临时变量还要小的话,对临时变量进行替换。
for(j=0;j<q;j++) {
int t_book = 100000001; //用于比较的临时变量
cin>>stuid[j].num>>stuid[j].need; //输入借阅者信息
for(int h=0;h<n;h++){ //遍历书库
if((stuid[j].need==(book[h]%(int)pow(10,stuid[j].num)))&&book[h]<=t_book) //如果满足最后位的等于关系并且图书Id比临时变量小,就用当前的bookid替换临时变量
t_book = book[h];
}
if(t_book==100000001) res[j] = -1;//如果没找到,结果就是-1
else res[j] = t_book; //如果找到了,结果就是比较临时变量
}
输出
因为我的处理在输入的过程中完成,根据题目要求,不能处理一个元素之后就进行输出,因此必须开辟一个跟借阅者数量一致的数组存储结果,最后遍历数组进行输出即可。
int *res = new int[q];//存储最终结果
for(int k = 0;k<q;k++){ //输出最终结果
cout<<res[k]<<endl;
}
reference
[1]c++定义数组
sharing part
C语言于1972年11月问世,1978年美国电话电报公司(AT&T)贝尔实验室正式发布C语言,1983年由美国国家标准局(American National Standards Institute,简称ANSI)开始制定C语言标准,于1989年12月完成,并在1990年春天发布,称之为ANSI C,有时也被称为 C89 或 C90。
from here
最后
以上就是开朗金针菇为你收集整理的牛客图书管理员问题C++o( ̄▽ ̄)ブshow my codewhat behind my codereferencesharing part的全部内容,希望文章能够帮你解决牛客图书管理员问题C++o( ̄▽ ̄)ブshow my codewhat behind my codereferencesharing part所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复