<풀이>
재귀함수를 이용하여 문제를 풀었다.
<코드>
static int result;
static void harvest(int cnt, int N, int [][] farm, int count, int add){
if(cnt == N)
result = count;
else{
int num = count;
int addNum = add;
if(cnt <= N/2){
for(int i = 0; i < N; i++){
if((N/2-cnt<=i) && (i<=N/2+cnt)){
num += farm[cnt][i];
}
}
}
else {
addNum++;
addNum++;
for(int i = 0; i < N; i++){
if((N/2-cnt+addNum<=i) && (i<=N/2+cnt-addNum)){
num += farm[cnt][i];
}
}
}
harvest(cnt+1, N, farm, num, addNum);
}
}
main안의 코드
for(int test_case = 1; test_case <= T; test_case++)
{
int N = sc.nextInt();
result = 0;
int [][] farm = new int [N][N];
String [] text = new String[N];
for(int i = 0; i < N; i++){
text = sc.next().split("");
for(int j = 0; j < N ; j++){
farm[i][j] = Integer.parseInt(text[j]);
}
}
harvest(0, N, farm, 0, 0);
System.out.println("#"+test_case + " " + result);
}