문제
링크
풀이
#include <stdio.h>
int n, m, k;
int a[10][10];
int b[10][10];
int solve(int r, int c, int cnt, int sum) {
if (cnt == k) return sum;
int max = -1000000;
for (int i=r; i<n; i++) {
for (int j=c; j<m; j++) {
if (b[i][j]) continue;
if (i > 0 && b[i-1][j]) continue;
if (i < n-1 && b[i+1][j]) continue;
if (j > 0 && b[i][j-1]) continue;
if (j < m-1 && b[i][j+1]) continue;
b[i][j] = 1;
int tmp = solve(r, c, cnt+1, sum+a[i][j]);
max = max > tmp ? max : tmp;
b[i][j] = 0;
}
}
return max;
}
int main(void) {
scanf("%d %d %d", &n, &m, &k);
for (int i=0; i<n; i++) {
for (int j=0; j<m; j++) {
scanf("%d", &a[i][j]);
b[i][j] = 0;
}
}
printf("%d", solve(0, 0, 0, 0));
return 0;
}