编程题
格子放鸡蛋 ### 题目描述 **本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。** X 星球的母鸡很聪明。它们把蛋直接下在一个 $N \times N$ 的格子中,每个格子只能容纳一枚鸡蛋。 它们有个习惯,要求:每行,每列,以及每个斜线上都不能有超过 2 个鸡蛋。 如果要满足这些要求,母鸡最多能下多少蛋呢,有多少种摆放方法呢? 下面的程序解决了这个问题,请仔细分析程序逻辑,推断划线处缺少的代码。 ### 源代码 **Java** ```java import java.util.*; public class Main { static int max = 0; static int T = 0; static final int N = 5; static void show(int[][] da) { for(int i=0; i=N){ int n = count(da); if(n>max) { max = n; T = 0; } if(n==max) T++; return; } int r_next = r; int c_next = c + 1; if(c_next>=N){ c_next = 0; r_next++; } if(_______________){ da[r][c] = 1; f(da, r_next, c_next); } da[r][c] = 0; f(da, r_next, c_next); } static int count(int[][] da) { int n = 0; for(int i=0; im) m = n; n=0; for(int i=0; im) m = n; n=0; for(int i=0; i=N || c+i>=N) break; if(da[r+i][c+i]==1) n++; } if(n>m) m = n; n=0; for(int i=0; i=N) break; if(da[r-i][c+i]==1) n++; } for(int i=1; i=N || c-i<0) break; if(da[r+i][c-i]==1) n++; } if(n > m) m = n; return m; } public static void main(String[] args) { int[][] da = new int[N][N]; f(da, 0, 0); System.out.println(max); System.out.println(T); } } ```
查看答案
赣ICP备20007335号-2