結果

問題 No.52 よくある文字列の問題
ユーザー kuuso1
提出日時 2014-10-28 23:58:42
言語 C#
(csc 2.7.0.62620)
結果
AC   *
実行時間 27 ms
コード長 1,629 Byte
コンパイル時間 1,018 ms
使用メモリ 17,592 KB
最終ジャッジ日時 2018-09-10 18:20:47

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
1.txt AC 26 ms
13,496 KB
2.txt AC 26 ms
15,512 KB
3.txt AC 27 ms
13,464 KB
4.txt AC 26 ms
15,512 KB
5.txt AC 26 ms
13,516 KB
6.txt AC 26 ms
15,552 KB
7.txt AC 27 ms
15,552 KB
8.txt AC 25 ms
17,592 KB
9.txt AC 25 ms
11,464 KB
10.txt AC 24 ms
15,520 KB
テストケース一括ダウンロード
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 2.7.0.62620 (e873e693)
Copyright (C) Microsoft Corporation. All rights reserved.

ソースコード

diff #
using System;
using System.Collections;
using System.Collections.Generic;
 
class TEST{
	static void Main(){
		Sol mySol =new Sol();
		mySol.Solve();
	}
}

class Sol{
	public void Solve(){
		S=rs();
		N=S.Length;
		H=new HashSet<String>();
		int[] route=new int[N];
		for(int i=0;i<N;i++)route[i]=-1;
		
		route[0]=0;
		dfs(route);
		route[0]=N-1;
		dfs(route);
		
		Console.WriteLine(H.Count);
		
	}
	
	void dfs(int[] route_){
		int[] route=(int[])route_.Clone();
//for(int i=0;i<N;i++)Console.Write("{0} ",route[i]);Console.WriteLine();
		int l=0;
		int r=N-1;
		int now=-1;
		for(int i=0;i<N;i++){
			if(route[i]!=-1){
				now=i;
				if(route[i]==l)l++;
				if(route[i]==r)r--;
			}
		}
		
		if(now==N-1){
			char[] c=new char[N];
			for(int i=0;i<N;i++)c[i]=S[route[i]];
//Console.WriteLine(new String(c));
			H.Add(new String(c));
			return;
		}
		route[now+1]=r;
		dfs(route);
		route[now+1]=l;
		dfs(route);
	}
	
	int N;
	HashSet<String> H;
	String S;
	public Sol(){
	}




	static String rs(){return Console.ReadLine();}
	static int ri(){return int.Parse(Console.ReadLine());}
	static long rl(){return long.Parse(Console.ReadLine());}
	static double rd(){return double.Parse(Console.ReadLine());}
	static String[] rsa(){return Console.ReadLine().Split(' ');}
	static int[] ria(){return Array.ConvertAll(Console.ReadLine().Split(' '),e=>int.Parse(e));}
	static long[] rla(){return Array.ConvertAll(Console.ReadLine().Split(' '),e=>long.Parse(e));}
	static double[] rda(){return Array.ConvertAll(Console.ReadLine().Split(' '),e=>double.Parse(e));}
}
0