3007(AOJ 1142):Organize Your Train part II
keyword
シミュレーション Java
概要
列車を2つに分割し、分割したそれぞれを反転させても良いし、前後を入れ替えて連結してもよい。全部で何種類のパターンができるか求める問題。
サイズが小さいので全パターンを列挙すればよい。易しめの実装ゲー。
import java.util.*; class Main { public static void main(String args[]){ Scanner in = new Scanner(System.in); int rept = in.nextInt(); for(int loop=0; loop<rept; loop++){ String train = in.next(); HashSet<String> set = new HashSet<String>(); int n = train.length(); for(int i=1; i<n; i++){ String pre = train.substring(0,i); String post= train.substring(i); String rpre = new StringBuffer(pre).reverse().toString(); String rpost = new StringBuffer(post).reverse().toString(); set.add(pre.concat(post)); set.add(pre.concat(rpost)); set.add(rpre.concat(post)); set.add(rpre.concat(rpost)); set.add(post.concat(pre)); set.add(post.concat(rpre)); set.add(rpost.concat(pre)); set.add(rpost.concat(rpre)); } System.out.println(set.size()); } } }