結果

問題 No.52 よくある文字列の問題
ユーザー kuuso1
提出日時 2014-10-28 23:58:42
言語 C#
(csc 2.8.2.62916)
結果
AC  
実行時間 37 ms
コード長 1,629 Byte
コンパイル時間 796 ms
使用メモリ 17,832 KB
最終ジャッジ日時 2019-06-05 18:59:22

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
1.txt AC 33 ms
15,784 KB
2.txt AC 32 ms
15,760 KB
3.txt AC 35 ms
15,768 KB
4.txt AC 32 ms
13,716 KB
5.txt AC 34 ms
13,764 KB
6.txt AC 37 ms
17,832 KB
7.txt AC 35 ms
11,708 KB
8.txt AC 36 ms
15,800 KB
9.txt AC 32 ms
13,744 KB
10.txt AC 34 ms
15,756 KB
99_system_test1.txt AC 35 ms
15,780 KB
テストケース一括ダウンロード
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 2.8.2.62916 (2ad4aabc)
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