蓝桥杯java第五届决赛第三题--格子放鸡蛋
来源:互联网 发布:网络教育是怎么回事 编辑:程序博客网 时间:2024/04/29 12:49
标题:格子放鸡蛋 X星球的母鸡很聪明。它们把蛋直接下在一个 N * N 的格子中,每个格子只能容纳一枚鸡蛋。它们有个习惯,要求:每行,每列,以及每个斜线上都不能有超过2个鸡蛋。如果要满足这些要求,母鸡最多能下多少蛋呢,有多少种摆放方法呢? 下面的程序解决了这个问题,请仔细分析程序逻辑,推断划线处缺少的代码。 public class A { static int max = 0; static int T = 0; static final int N = 6; // 只能在(r,c) 以及其右,其下放置 static void f(int[][] da, int r, int c) { if(r>=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; i<da.length; i++) for(int j=0; j<da[i].length; j++) if(da[i][j]==1) n++; return n; } static int spy(int[][] da, int r, int c) { int m=0; // 该行 int n=0; for(int i=0; i<N; i++) if(da[r][i]==1) n++; if(n>m) m = n; //该列 n=0; for(int i=0; i<N; i++) if(da[i][c]==1) n++; if(n>m) m = n; //右斜线 n=0; for(int i=0; i<N; i++){ if(r-i<0 || c-i<0) break; if(da[r-i][c-i]==1) n++; } for(int i=1; i<N; i++){ if(r+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; i++){ if(r-i<0 || c+i>=N) break; if(da[r-i][c+i]==1) n++; } for(int i=1; i<N; i++){ if(r+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); } } 注意:通过浏览器提交答案。只填写缺少的内容,不要填写任何多余的内容(例如:说明性文字或已有符号)。
思路:其实这题比较简单,因为在题目中已经明确的告诉了你每行,每列,以及每个斜线上都不能有超过2个鸡蛋,所以只要仔细点就知道只需要调用spy函数就解决了。
答案:spy(da,r,c) < 2
阅读全文
0 0
- 蓝桥杯java第五届决赛第三题--格子放鸡蛋
- 蓝桥杯_格子放鸡蛋
- 蓝桥杯java第五届决赛第一题--国王的遗产
- 蓝桥杯java第五届决赛第二题--六角幻方
- 蓝桥杯java第五届决赛第四题--排列序数
- 地址格式转换,蓝桥第三届决赛第五题
- [蓝桥杯]第三届Java高职组决赛第四题
- 蓝桥杯java第七届决赛第三题--打靶
- 蓝桥杯java第六届决赛第三题--显示二叉树
- 蓝桥杯java第三届决赛第一题--星期日
- 蓝桥杯java第三届决赛第四题--DNA比对
- JAVA [ 多线程 --- 放鸡蛋 ]
- 蓝桥杯第三届总决赛
- 详细解说kmp,第五届蓝桥杯决赛第三题
- 蓝桥杯 第七届决赛第五题 路径之谜
- 蓝桥杯第五届决赛B组
- 蓝桥杯第五届决赛 神奇6位数
- 第三届蓝桥杯Java高职组决赛第三题
- Git 学习笔记
- 000027:使用算术运算符将变量的计算结果输出
- 22.七-通过unittest单元测试框架编写单元测试用例
- leetcode-88. Merge Sorted Array
- 基于nodejs实现16进制转浮点数
- 蓝桥杯java第五届决赛第三题--格子放鸡蛋
- 工作总结30 ORACLE表空间无法扩展后处理
- 关于 Linux 进程
- Hadoop 的简单描述
- angular常用模块
- MySQL数据库(34)
- 串口流控
- CocosBuilder回调事件失败问题
- C++容器与noncopyable