https://www.hackerrank.com/contests/w35/challenges/triple-recursion
N行N列の行列aがあり、以下のルールでこの行列を埋めていく。
- i=0かつj=0なら a[i][j] = M
- i=jなら a[i][j] = a[i -1][j - 1] + K
- i>jなら a[i][j] = a[i - 1][j] - 1
- i<jなら a[i][j] = a[i][j - 1] - 1
行列aを構築し、答えよ。
解法
真のやるだけ問題。
行列の表示の方法にはいくつかあるが、自分はこの方法がお気に入り。
int N, M, K, a[101][101]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N >> M >> K; rep(i, 0, N) rep(j, 0, N) { if (i == 0 and j == 0) a[i][j] = M; else if (i == j) a[i][j] = a[i - 1][j - 1] + K; else if (i > j) a[i][j] = a[i - 1][j] - 1; else if (i < j) a[i][j] = a[i][j - 1] - 1; } rep(i, 0, N) { rep(j, 0, N) { if (j) printf(" "); printf("%d", a[i][j]); } printf("\n"); } }