UVa 127 Accordian Patience
2015-11-08 16:04
253 查看
import java.io.File; import java.io.FileNotFoundException; import java.util.LinkedList; import java.util.Scanner; class Stack{ private LinkedList<String> storage = new LinkedList<String>(); public Stack(String str) { storage.addFirst(str); } public void push(String element) { storage.addFirst(element); } public String peek() { return storage.getFirst(); } public String pop() { return storage.removeFirst(); } public boolean empty() { return storage.isEmpty(); } public String toString() { return Integer.toString(storage.size()); } } public class Main{ public static boolean compatible(String a, String b) { if(a.charAt(0) == b.charAt(0) || a.charAt(1) == b.charAt(1)) return true; else return false; } public static void main(String[] args) throws FileNotFoundException { Scanner in = new Scanner(System.in); while(true) { String tmp1 = in.nextLine(); if(tmp1.equals("#")) break; String tmp2 = in.nextLine(); tmp1 = tmp1+" "+tmp2; String[] tmp = tmp1.split(" "); LinkedList<Stack> piles = new LinkedList<Stack>(); for(String t:tmp) piles.add(new Stack(t)); int i = 0; while(i < piles.size()) { String next3, cur, last1; cur = piles.get(i).peek(); boolean removed = false; boolean next3rev = false; if(i - 3 >= 0) { next3 = piles.get(i-3).peek(); if(compatible(cur, next3)) { piles.get(i-3).push(piles.get(i).pop()); if(piles.get(i).empty()) piles.remove(i); removed = true; next3rev = true; } } if(i - 1 >= 0 && !next3rev) { last1 = piles.get(i-1).peek(); if(compatible(cur, last1)) { piles.get(i-1).push(piles.get(i).pop()); if(piles.get(i).empty()) piles.remove(i); removed = true; } } if(removed) i= 0; else {i++;} } String ans = ""; for(Stack s: piles) ans = ans + " " + s; if(piles.size() == 1) System.out.println("1 pile remaining:"+ans); else System.out.println(piles.size()+" piles remaining:"+ans); } } }
相关文章推荐
- dlopen动态函数库的加载。
- 泛型相关知识
- 前序创建二叉树+ 前序/中序/后序遍历二叉树
- OSGI的类加载机制
- 20135337——信息安全设计基础第八周学习笔记
- 20135220谈愈敏--信息安全系统设计基础第八周学习总结
- 近视矫正手术:准分子激光,飞秒,全飞秒
- VS2010配置C/C++多线程使用环境
- 当刘小立访问Google时,刘小立如何能访问? ---《计算机网络-自顶向下方法》
- linux命令-bzip2压缩
- Linux expect命令
- Linux之NFS基础总结及应用实践
- swift 重载 泛式 inout的使用
- jsp乱码问题
- 《leetCode》:Rotate Image
- NSCache的使用,SDWebImage的使用,Reachability联网状态检测框架的使用
- 大话AlarmManage
- jsp 按钮颜色
- minStack实现
- 09-网站标题图片设置