UVA 230 Borrowers
Posted jaszzz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVA 230 Borrowers相关的知识,希望对你有一定的参考价值。
题意:模拟图书馆图书的借用状态。书有三种状态:1在图书馆的书架上,2被接走了,3刚还回来还没有放到书架上。每次有三种操作:1借书,2还书,3把换回来的书放回书架。
思路:思路简单,主要就是map,set的运用比较复杂,还是折腾了挺久
#include<bits/stdc++.h> struct Book { string aut,tit; bool operator < (const struct Book& b)const{ return aut<b.aut || (aut==b.aut && tit<b.tit); } }book; set<Book> ret,lib; string s,tit; map<string,string> mp; int main(void) { while(getline(cin,s)&&(s!="END")) { int i=s.find(‘"‘,1); book.tit=s.substr(0,i+1); book.aut=s.substr(i+5); mp[book.tit]=book.aut; lib.insert(book); } while(getline(cin,s)) { if(s[0]==‘E‘) break; if(s[0]==‘S‘) // 显示操作 { set<Book>::iterator it,it1; for(it=ret.begin();it!=ret.end();it++) { cout<<"Put "<<it->tit<<" "; it1=lib.lower_bound(*it); if(lib.empty()||it==lib.begin()) cout<<"first"<<endl; else cout<<"after "<<(--it1)->tit<<endl; lib.insert(*it); } ret.clear(); cout<<"END"<<endl; } else // 借还操作 { int i=s.find(‘"‘); string booktit=s.substr(i); book.tit=booktit; book.aut=mp[booktit]; if(s[0]==‘B‘) lib.erase(book); else ret.insert(book); } } return 0; }
以上是关于UVA 230 Borrowers的主要内容,如果未能解决你的问题,请参考以下文章
UVA 230 Borrowers (STL 行读入的处理 重载小于号)
习题5_8 图书管理系统(Borrowers, ACM/ICPC World Finals 1994, UVa230)
七个办法只有一个有效:200 PORT command successful. Consider using PASV.425 Failed to establish connection.(代码片段