现在的位置: 首页 > 综合 > 正文

ZOJ-2936

2014年04月05日 ⁄ 综合 ⁄ 共 1496字 ⁄ 字号 评论关闭

模拟题,用JAVA方便点。。感觉还是不顺手啊,要写各种泛型真麻烦,这么水的题都写了一小时。。真捉鸡啊

import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
import java.util.TreeSet;

public class Main
{
	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		int count = 0;
		while (sc.hasNextLine())
		{
			String line = sc.nextLine().trim();
			if ("#".equals(line))
				break;
			count++;
			String[] ss = line.split(",");
			Map<Character, TreeSet<Character>> map = new TreeMap<Character, TreeSet<Character>>();
			for (String s : ss)
			{
				String[] sp;
				if (s.indexOf('-') != -1)
				{
					sp = s.split("-");
					for (char c : sp[0].toCharArray())
					{
						TreeSet<Character> set = map.get(c);
						if (set == null)
							set = new TreeSet<Character>();
						for (char cc : sp[1].toCharArray())
							set.remove(cc);
						map.put(c, set);
					}
				}
				else if (s.indexOf('+') != -1)
				{
					sp = s.split("\\+");
					for (char c : sp[0].toCharArray())
					{
						TreeSet<Character> set = map.get(c);
						if (set == null)
							set = new TreeSet<Character>();
						for (char cc : sp[1].toCharArray())
							set.add(cc);
						map.put(c, set);
					}
				}
				else
				{
					sp = s.split("=");
					for (char c : sp[0].toCharArray())
					{
						TreeSet<Character> set = map.get(c);
						if (set == null)
							set = new TreeSet<Character>();
						set.clear();
						for (char cc : sp[1].toCharArray())
							set.add(cc);
						map.put(c, set);
					}
				}
			}
			System.out.print(count + ":");
			boolean isFirst = true;
			TreeSet<Character> prev = null;
			TreeSet<Character> curr = null;
			for (char c : map.keySet())
			{
				if (map.get(c).isEmpty())
					continue;
				curr = map.get(c);
				if (isFirst)
					isFirst = false;
				else if (!prev.equals(curr) && prev.size() > 0)
					for (char cc : prev)
						System.out.print(cc);

				if (!curr.isEmpty())
					System.out.print(c);
				prev = curr;
			}
			if (curr != null && curr.size() > 0)
				for (char cc : curr)
					System.out.print(cc);
			System.out.println();
		}
	}
}
【上篇】
【下篇】

抱歉!评论已关闭.