結果
| 問題 | No.225 文字列変更(medium) |
| コンテスト | |
| ユーザー |
htensai
|
| 提出日時 | 2020-01-15 19:48:24 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 179 ms / 5,000 ms |
| コード長 | 1,106 bytes |
| 記録 | |
| コンパイル時間 | 2,274 ms |
| コンパイル使用メモリ | 77,748 KB |
| 実行使用メモリ | 48,568 KB |
| 最終ジャッジ日時 | 2024-06-11 17:29:15 |
| 合計ジャッジ時間 | 6,476 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 22 |
ソースコード
import java.util.*;
import java.math.*;
public class Main {
static int[][] dp;
static char[] aArr;
static char[] bArr;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
dp = new int[n][m];
aArr = sc.next().toCharArray();
bArr = sc.next().toCharArray();
System.out.println(getCount(0, 0));
}
static int getCount(int aIdx, int bIdx) {
if (aIdx == aArr.length) {
return bArr.length - bIdx;
}
if (bIdx == bArr.length) {
return aArr.length - aIdx;
}
if (dp[aIdx][bIdx] != 0) {
return dp[aIdx][bIdx];
}
int min;
if (aArr[aIdx] == bArr[bIdx]) {
min = getCount(aIdx + 1, bIdx + 1);
} else {
min = getCount(aIdx + 1, bIdx + 1) + 1;
min = Math.min(min, getCount(aIdx + 1, bIdx) + 1);
min = Math.min(min, getCount(aIdx, bIdx + 1) + 1);
}
dp[aIdx][bIdx] = min;
return min;
}
}
htensai