网格问题

作者: 有奶喝先森 | 来源:发表于2017-02-24 15:47 被阅读0次

今天看到一个算法题,题目呢是长这个样子的:

猪场有一个x*y的网格盒子,网格的行编号为0~x-1,列编号为0~y-1。每个格子至多可以放一块蛋糕,任意两块蛋糕之间的欧几里得距离不能等于2。对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为((x1-x2)^2+(y1-y2)^2)的算术平方根,猪场老板想知道最多可以放多少块蛋糕在网络格子里。


输入描述:

x>=1,y<=1000

输出描述:

输出一个最多可以放的蛋糕数和网格的情况。

输入例子:

x=3,y=2

输出例子:

4


我的思考:

若要满足题目条件,同一行的两个蛋糕要隔两行以上,且同一列的蛋糕要隔两列以上。

要满足最大化的条件,则同一行的两个蛋糕隔两行,同一列的蛋糕隔两列。

经过演算,一种是2*2方块组每隔两行或者两列铺列开来,另一种是对角线*2每隔两个对角线铺列开来。本质其实是一样的,都是满足上述最大化的条件。


我实现了第一种方案:

package new2017;

import java.util.Arrays;

public class Wangge {
 private static int count = 0;
 public static void main(String[] args) {
  int x = 10, y = 10;
  int[][] a = new int[x][y];
  maxWangge(a);
 }
 public static void maxWangge(int[][] a){
  int x=a.length,y=a[0].length;
  for (int i = 0; i < x; i++) {
   for (int j = 0; j < y; j++) {
    if (i >= 2 && j >= 2) {
     if (a[i - 2][j] == 0 && a[i][j - 2] == 0) {
      addCount(a,i,j);
     }
    } else if (i >= 2 && j < 2) {
     if (a[i - 2][j] == 0) {
      addCount(a,i,j);
     }
    } else if (i < 2 && j >= 2) {
     if (a[i][j - 2] == 0) {
      addCount(a,i,j);
     }
    } else {
     addCount(a,i,j);
    }
   }
  }
  System.out.println("最大的蛋糕数为:"+count);
  for(int[] b : a){
   System.out.println(Arrays.toString(b));
  }
 }
 
 public static void addCount(int[][] a,int i,int j){
  a[i][j] = 1;
  count++;
 }
}

输出结果为:

最大的蛋糕数为:52

[1, 1, 0, 0, 1, 1, 0, 0, 1, 1]

[1, 1, 0, 0, 1, 1, 0, 0, 1, 1]

[0, 0, 1, 1, 0, 0, 1, 1, 0, 0]

[0, 0, 1, 1, 0, 0, 1, 1, 0, 0]

[1, 1, 0, 0, 1, 1, 0, 0, 1, 1]

[1, 1, 0, 0, 1, 1, 0, 0, 1, 1]

[0, 0, 1, 1, 0, 0, 1, 1, 0, 0]

[0, 0, 1, 1, 0, 0, 1, 1, 0, 0]

[1, 1, 0, 0, 1, 1, 0, 0, 1, 1]

[1, 1, 0, 0, 1, 1, 0, 0, 1, 1]


总结:像今天的网格问题和我之前分享的Wikioi问题,都可以通过二维数组的简单比较实现,记得注意边界值的判断哦。

我是Wikioi推送门:Wikioi的简单实现

相关文章

  • 网格问题

    今天看到一个算法题,题目呢是长这个样子的: 猪场有一个x*y的网格盒子,网格的行编号为0~x-1,列编号为0~y-...

  • 解动态网格问题 2020-03-05(未经允许,禁止转载)

    动态网格问题 这里的动态网格问题,指的是这样一类问题:存在一个网格盘grid,其中的各个网格存放着对应的值,并且这...

  • 秩序之美:网页中的网格设计

    一、网格的作用1、网格以解决问题为首要任务,美观在其次。 2、网格是用户体验的组成部分。 3、网格越简单,就越有效...

  • 网格资源分配问题:

    A:网格关注资源分配,存在歧义 M:各网格长心情激动 B:各网格内协同都不愿意执行,都各自为自己的网格着想 R:预...

  • 楼道问题巡查“五要素”

    6月2日(周三)是网格日。兰溪市创建办要求网格员着重做好网格巡查、问题排查、信息采集、便民服务等工作,对所负责楼道...

  • 平面设计中的网格系统

    为什么要建立这样的网格系统,怎样在网格系统的帮助下快速解决设计中的问题,使设计更具功能性、逻辑性和视觉美感。网格系...

  • 强化学习基础篇(二十一)网格问题

    强化学习基础篇(二十一)网格问题 该问题基于《Reinforcement Learning: An Introdu...

  • Python3 趣味系列题9 ------一笔画完

    一、问题描述 一笔画完就是从起始网格开始,也就是下图中锦鲤喵所在的网格,用一笔划过所有可以走(灰底)的网格,不能遗...

  • Word技巧:如何设置Word网格线能让打印出来?

    场景:财务、HR、采购、市场,行政部、国企等需要Word网格线打印的办公人士。 问题:如何设置Word网格线能让打...

  • 2018-10-17

    A:网格经理与渠道沟通出现问题 M:烦躁,不安 B:想问责网格经理未服务好渠道 R:若长期这样,结果会导致渠道满意...

网友评论

    本文标题:网格问题

    本文链接:https://www.haomeiwen.com/subject/gxewwttx.html