题目链接:
https://www.nowcoder.com/practice/8ef655edf42d4e08b44be4d777edbf43?tpId=37&&tqId=21276&rp=1&ru=/activity/oj&qru=/ta/huawei/question-ranking
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
int m = 2 * n - 1;//不难发现列数 = 2 * 行数 - 1
int[][] arr = new int[n][m];
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
arr[i][j] = 0;//对arr进行初始化
}
}
arr[0][0] = 1;//表示第0行第0列的数
for(int i = 1; i < n; i++){//表示从第 1 行开始
//又不难发现,当i = 1时,j = 2;当i = 2时,j = 4
//所以j = 2 * i
//又又不难发现第 0 列和最后一列都是 1
arr[i][0] = arr[i][2 * i] = 1;
for(int j = 1; j < 2 * i; j++){//表示从第 1 列开始
if(j == 1){
//又又又不难发现,第1列的数 = 它正上面的数 + 左上角的数
//这是特殊情况
arr[i][j] = arr[i - 1][j] + arr[j - 1][j - 1];
}else{
//除了第 0, 1, 最后一列,其余的列 = 左上角的数 + 它正上面的数 + 右上角的数
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1] + arr[i - 1][j - 2];
}
}
}
int k = 0;
for(; k < m; k++){
if(arr[n - 1][k] % 2 == 0){//判断某行第k列的数是否是偶数
System.out.println(k + 1);
break;
}
}
if(k == m){
System.out.println(-1);
}
}
}
}