• Java练习题十四期:不要二


    嘿!
    这期博客又是一期练习题,希望对你有帮助!
    在这里插入图片描述

    前言

    如果哪里写错了或者不明白的都可以私聊我哦!谢谢!

    一,题目

    二货小易有一个W*H的网格盒子,网格的行编号为0H-1,网格的列编号为0W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。
    对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根小易想知道最多可以放多少块蛋糕在网格盒子里。
    在这里插入图片描述

    二,解析

    本题的重点是要读懂题意,并且需要多读两遍,才能读懂,本题本质就是在二维数组中每个坐标去放蛋糕,
    一个坐标位置放了蛋糕,跟他欧几里得距离为2的位置不能放蛋糕,这个就是关键点。对于两个格子坐标
    (x1,y1),(x2,y2)的欧几里得距离为: ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根 。
    也就是说:如果(x1,y1)放了蛋糕,则满足 ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) == 4的(x2,y2)不能放蛋
    糕。
    ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) == 4看起来是一个无解的表达式。
    但是可以进行加法表达式分解:
    1+3=4
    3+1=4
    2+2=4
    0+4=4
    4+0=4
    仔细分析前三个表达式是不可能的,因为(x1-x2) * (x1-x2)表达式结果不能等于2或3。也就是说( (x1-x2) * (x1-x2) 和(y1-y2) * (y1-y2) )两个表达式一个等于0,一个于4.可以看出:假设放蛋糕的位置是(x1,y1),则不能放蛋糕的位置(x2,y2),满足x1x2,y1-y22或者x1-x22,y1y2.
    在这里插入图片描述
    在这里插入图片描述

    三,代码

    import java.util.Scanner;
    
    public class Main2 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int w = scanner.nextInt();
            int h = scanner.nextInt();
            int[][] arr = new int[w][h];
            int count =0;
            for (int i = 0; i < w; i++) {
                for (int j = 0; j <h ; j++) {
                    if (arr[i][j]==0){
                        count++;
                        if (i+2 <w){
                            arr[i+2][j] = 1;
                        }
                        if (j+2 <h){
                            arr[i][j+2] = 1;
                        }
                    }
                }
            }
            System.out.println(count);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    这期博客就到此结束了!希望对你有帮助哈!
    记得关注小猪哦!
    下期再见了!
    请添加图片描述

  • 相关阅读:
    springboot logback配置文件详解
    AcWing 1211:蚂蚁感冒 ← 模拟题
    Is the docker daemon running问题解决方法
    一文带你了解如何编写自动化测试用例
    RSA的一些数论知识
    【JS】Chapter11-正则&阶段案例
    FE_Vue学习笔记 - 数据代理
    华为机试真题 Java 实现【高效的任务规划】
    说一下你项目或者实习的收获?
    AppScan自定义扫描策略,扫描针对性漏洞
  • 原文地址:https://blog.csdn.net/m0_62262008/article/details/127656705