結果

問題 No.52 よくある文字列の問題
ユーザー kuuso1
提出日時 2014-10-28 23:58:42
言語 C#
(csc 2.8.2.62916)
結果
AC   *
実行時間 33 ms
コード長 1,629 Byte
コンパイル時間 670 ms
使用メモリ 9,964 KB
最終ジャッジ日時 2018-11-26 15:06:06

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
1.txt AC 31 ms
9,684 KB
2.txt AC 30 ms
9,664 KB
3.txt AC 32 ms
9,916 KB
4.txt AC 31 ms
9,668 KB
5.txt AC 33 ms
9,964 KB
6.txt AC 33 ms
9,944 KB
7.txt AC 32 ms
9,960 KB
8.txt AC 31 ms
9,820 KB
9.txt AC 30 ms
9,716 KB
10.txt AC 30 ms
9,660 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