UVA 230 Borrowers(图书管理系统)
来源:互联网 发布:mac系统更新10.10 编辑:程序博客网 时间:2024/05/22 05:23
题意:模拟图书管理系统,首先输入若干图书的标题和作者(标题各不相同,以END结束),然后是若干指令:borrow指令表示借书,return指令表示还书,shelve指令表示把所以已归还但还没有上架的图书排序后插入书架并输入图书标题和插入位置(可能是第一本书或者某本书的后面),图书排序的方法是先按作者从小到大排序,再按标题从小到大排序。在处理第一条指令前,你应当先将所有图书按照这种方式排序。
思路:直接模拟,建立Book{书名,作者},用Vector存下,然后按照规则排序,同时用map记下每本书的作者,shelve的时候吧前面return的书按照上面规则排序,然后存起来到Vector类型的returnBook中,每输出一条,就把第一个数据从returnbook中移除.知道returnbook为空。
import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.Map;import java.util.Scanner;import java.util.Vector;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);Vector<Book> v = new Vector<>();Vector<Book> returnbook = new Vector<>();Map<String,String> map = new HashMap<>();while(true){String str = scan.nextLine();if("END".equals(str))break;int index = str.indexOf('"', 1);String bookname = str.substring(1,index);String author = str.substring(index+5);v.add(new Book(bookname,author));map.put(bookname, author);}Collections.sort(v, new Cmp());while(true){String str = scan.nextLine();if("END".equals(str))break;if("SHELVE".equals(str)){if(!returnbook.isEmpty()){Collections.sort(returnbook,new Cmp());Collections.sort(v,new Cmp());for(int i=0;i<v.size()&&!returnbook.isEmpty();i++){if(v.get(i).bookname.equals(returnbook.get(0).bookname)){if(i!=0){System.out.printf("Put \"%s\" after \"%s\"\n",v.get(i).bookname,v.get(i-1).bookname);}else{System.out.printf("Put \"%s\" first\n",v.get(i).bookname);}returnbook.remove(0);}}}System.out.println("END");}else{String bookname = str.substring(8,str.length()-1);String author = map.get(bookname);if(str.charAt(0)=='B'){remove(v,bookname);}if(str.charAt(0)=='R'){returnbook.add(new Book(bookname,author));v.add(new Book(bookname,author));}}}}public static void remove(Vector<Book> v,String book){for(int i=0;i<v.size();i++){if(v.get(i).bookname.equals(book)){v.remove(i);return;}}}static class Cmp implements Comparator<Book>{@Overridepublic int compare(Book o1, Book o2) {// TODO Auto-generated method stubif(o1.author.compareToIgnoreCase(o2.author)!=0)return o1.author.compareToIgnoreCase(o2.author);elsereturn o1.bookname.compareToIgnoreCase(o2.bookname);}}static class Book{String bookname;String author;public Book(String bookname,String author){this.bookname = bookname;this.author = author;}}}
1 0
- UVA 230 Borrowers(图书管理系统)
- 5-8 UVA 230 Borrowers图书管理系统
- UVA-230 图书管理系统
- 习题5-8 图书管理系统(Borrowers, UVa230)
- UVA - 230 Borrowers
- UVa 230 - Borrowers
- UVA - 230 Borrowers
- UVA-230 Borrowers
- Uva - 230 - Borrowers
- UVA 230 Borrowers
- UVA 230(p136)----Borrowers
- UVa 230 Borrowers
- uva 230 Borrowers
- UVA 230 Borrowers
- uva 230 Borrowers
- UVa 230 Borrowers
- 关于”图书管理系统(Borrowers,ACM/ICPC World Finals 1994, UVa230)"的讨论
- 算法竞赛入门经典 第二版 习题5-8 图书管理系统 Borrowers uva230
- 实战项目商城(第三天)
- 考研复试系列——第七节 最短路径
- git和git 本地备份 学习心得
- JVM学习之运行时数据区域
- AngularJS1.0的使用总结笔记------004
- UVA 230 Borrowers(图书管理系统)
- 在Linux平台上下载并安装GNU Make
- Navicat Premium连接SQL SERVER2008
- Apache Kafka Introduction
- hosts+nginx将域名请求指向IP
- 设计模式 (9)——外观模式(Facade Pattern,结构型)
- leetcode324~Wiggle Sort II
- C#中进行中英文字符截取(中文2个长度,英文1个)
- 机器学习笔记