結果
| 問題 | No.1909 Detect from Substrings |
| コンテスト | |
| ユーザー |
37zigen
|
| 提出日時 | 2022-04-22 21:28:40 |
| 言語 | Java (openjdk 23) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 1,262 bytes |
| コンパイル時間 | 2,981 ms |
| コンパイル使用メモリ | 78,684 KB |
| 実行使用メモリ | 770,528 KB |
| 最終ジャッジ日時 | 2024-06-24 02:32:46 |
| 合計ジャッジ時間 | 11,319 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 5 MLE * 1 -- * 30 |
ソースコード
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main implements Runnable { //Runnableを実装する
public static void main(String[] args) {
new Thread(null, new Main(), "", 16 * 1024 * 1024).start(); //16MBスタックを確保して実行
}
int dfs(char[][] str, char[] ans, int pos, int[] equiv) {
int ret=0;
if (pos==ans.length) return 1;
for (int i=0;i<26;++i) {
ans[pos]=(char)(i+'a');
int[] nequiv=Arrays.copyOf(equiv, equiv.length);
boolean ok=true;
for (int j=0;j<str.length;++j) {
if (equiv[j] < str[j].length && ans[pos]==str[j][equiv[j]]) ++nequiv[j];
ok &= (pos+1)-nequiv[j] <= 1;
}
if (ok) ret += dfs(str, ans, pos+1, nequiv);
}
return ret;
}
public void run() {
Scanner sc=new Scanner(System.in);
PrintWriter pw=new PrintWriter(System.out);
int N=sc.nextInt();
int M=sc.nextInt();
char[][] str=new char[N][M];
for (int i=0;i<N;++i) str[i]=sc.next().toCharArray();
int[] equiv=new int[M];
char[] ans=new char[M+1];
pw.println(dfs(str, ans, 0, equiv));
pw.close();
}
void tr(Object ... o) {System.out.println(Arrays.deepToString(o));}
}
37zigen