• 牛客网在线编程:不要二


    题目描述:

    二货小易有一个W*H的网格盒子,网格的行编号为0~H-1,网格的列编号为0~W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。
    对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:
    ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根
    小易想知道最多可以放多少块蛋糕在网格盒子里。
    输入描述:
    每组数组包含网格长宽W,H,用空格分割.(1 ≤ W、H ≤ 1000)
    输出描述:
    输出一个最多可以放的蛋糕数
    示例1
    输入

    3 2
    输出

    4

    思路:

    1 1 * * 1 1 * *
    1 1 * * 1 1 * *
    * * 1 1 * * 1 1
    * * 1 1 * * 1 1

    *对于点的x,y坐标,如果x除4余0或者除4余1,则y除4余0或者除4余1的点flag设为1
    *如果x除4余2或者除4余3则y除4余2或者除4余3的flag设置为1
    *统计flag = 1的个数即可
    *有简单算法,找规律,将所有点放在同一行,则问题变成了隔一个空放一个蛋糕
    if(r%4==0||c%4==0){n=r*c/2;}//如果能整除4 那么蛋糕个数为网格个数的一半
        else{ n=r*c/2+1;}//不能被4整除 将蛋糕每隔一个空放一个 可以放多少 奇数的一半+1

     1 import java.util.*;
     2 
     3 public class Buyaoer {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7         Scanner sc = new Scanner(System.in);
     8         int x = sc.nextInt();
     9         int y = sc.nextInt();
    10         sc.close();
    11         //System.out.println(x);
    12         //System.out.println(y);
    13         int[][] flag = new int[x][y];
    14         int count = 0;
    15         for(int i = 0; i < x; i++){
    16             if(i%4 == 0 || i%4 == 1){
    17                 for(int j = 0; j < y; j++){
    18                     if(j%4==0||j%4==1){
    19                         //System.out.println(i);
    20                         //System.out.println(j);
    21                         flag[i][j] = 1;
    22                         count++;
    23                     }
    24                 }
    25             }else {
    26                 for(int j=0; j<y; j++){    
    27                     if(j%4==2||j%4==3){
    28                         //System.out.println(i);
    29                         //System.out.println(j);
    30                         flag[i][j]=1;
    31                         count++;
    32                     }        
    33                 }
    34             }
    35         }
    36     
    37         System.out.println(count);
    38     }
    39 
    40 }
  • 相关阅读:
    奇虎360安全牛人全球挑战赛无线部…
    Portugal 2 1 minute has Pipansihuan Germany and USA tacit or kick the ball
    求最大公约数和最小公倍数
    JQuery的Ajax跨域请求的解决方式
    从Java到C++——从union到VARIANT与CComVariant的深层剖析
    抽卡概率的測试
    jquery序列化表单以及回调函数的使用
    Notepad++插件安装和使用和打开大文件
    Android开发遇到的问题
    bzoj3068: 小白树
  • 原文地址:https://www.cnblogs.com/zlz099/p/8550202.html
Copyright © 2020-2023  润新知