結果
| 問題 |
No.2430 Damage Zone
|
| コンテスト | |
| ユーザー |
chro_96
|
| 提出日時 | 2023-08-18 23:35:00 |
| 言語 | C (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 11 ms / 2,000 ms |
| コード長 | 1,371 bytes |
| コンパイル時間 | 1,179 ms |
| コンパイル使用メモリ | 30,976 KB |
| 実行使用メモリ | 17,500 KB |
| 最終ジャッジ日時 | 2024-11-28 11:03:31 |
| 合計ジャッジ時間 | 1,400 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 28 |
ソースコード
#include <stdio.h>
int main () {
int h = 0;
int w = 0;
int k = 0;
char s[100][101] = {};
int res = 0;
long long ans = 0LL;
long long mod_num = 998244353LL;
long long dp[100][100][200] = {};
res = scanf("%d", &h);
res = scanf("%d", &w);
res = scanf("%d", &k);
for (int i = 0; i < h; i++) {
res = scanf("%s", s[i]);
}
dp[0][0][0] = 1LL;
for (int i = 1; i < w; i++) {
if (s[0][i] == '.') {
for (int j = 0; j < k; j++) {
dp[0][i][j] = dp[0][i-1][j];
}
} else if (s[0][i] == 'o') {
for (int j = 0; j < k-1; j++) {
dp[0][i][j+1] = dp[0][i-1][j];
}
}
}
for (int i = 1; i < h; i++) {
if (s[i][0] == '.') {
for (int j = 0; j < k; j++) {
dp[i][0][j] = dp[i-1][0][j];
}
} else if (s[i][0] == 'o') {
for (int j = 0; j < k-1; j++) {
dp[i][0][j+1] = dp[i-1][0][j];
}
}
for (int j = 1; j < w; j++) {
if (s[i][j] == '.') {
for (int l = 0; l < k; l++) {
dp[i][j][l] = (dp[i-1][j][l]+dp[i][j-1][l])%mod_num;
}
} else if (s[i][j] == 'o') {
for (int l = 0; l < k-1; l++) {
dp[i][j][l+1] = (dp[i-1][j][l]+dp[i][j-1][l])%mod_num;
}
}
}
}
for (int i = 0; i < k; i++) {
ans += dp[h-1][w-1][i];
}
printf("%lld\n", ans%mod_num);
return 0;
}
chro_96