## 找规律
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int m = 2 * n - 1;
if (n == 1 || n == 2) {
System.out.println(-1);
return;
}
if (n % 2 != 0) { //奇数行
System.out.println(2);
return;
}
//偶数行
if(n%4==0){
System.out.println(3);
}
if(n%4==2){
System.out.println(4);
}
}
}
## 利用循环,解出所有数据
package com.example.demo1;
import java.util.*;
import java.util.stream.Collectors;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int m = 2 * n - 1;
int[][] dp = new int[n][m];
if (n == 1 || n == 2) {
System.out.println(-1);
return;
}
if (n % 2 != 0) { //奇数行
System.out.println(2);
return;
}
//偶数行
for (int i=0;i<n;i++){
for (int j=0;j<(2*i+1);j++){
if(i==0 || i==1) {
dp[i][j]=1;
continue;
}
if(i>1 && j==0) {
dp[i][j]=1;
continue;
} else if(i>1 && j==1){
dp[i][j]=i;
continue;
}else {
dp[i][j] = dp[i - 1][j - 2] + dp[i - 1][j - 1] + dp[i - 1][j];
}
}
}
//1.暴力解法
for (int i = 2; i < m; i++) {
// dp[n-1][i] = f(n-1, i);
//若存在偶数
if (dp[n-1][i] % 2 == 0) {
System.out.println(i + 1);
return;
}
//若不存在偶数
if (i == (m - 1)) {
System.out.println(-1);
return;
}
}
}
}
## 利用递归,解出第i,j个数据
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int m = 2 * n - 1;
int[][] dp = new int[n][m];
if (n == 1 || n == 2) {
System.out.println(-1);
return;
}
if (n % 2 != 0) { //奇数行
System.out.println(2);
return;
}
//偶数行
/*for (int i=2;i<n;i++){
for (int j=2;j<2*i+1;j++){
dp[i][j]=f(i,j);
}
}*/
//1.暴力解法
for (int i = 2; i < m; i++) {
dp[n-1][i] = f(n-1, i);
//若存在偶数
if (dp[n-1][i] % 2 == 0) {
System.out.println(i + 1);
return;
}
//若不存在偶数
if (i == (m - 1)) {
System.out.println(-1);
return;
}
}
}
public static int f(int row, int column) {
if (column>2*row) {
return 0;
}else if (row==1) {
return 1;
}else if (column==1){
return row;
}else if(column==0) {
return 1;
}
return f(row - 1, column - 2) + f(row - 1, column - 1) + f(row - 1, column);
}
}