两道题

1. 判断平面上一点是否在四边形内

思路

在这里插入图片描述

代码

    /**
     * 计算三角形面积
     * @param a
     * @param b
     * @param c
     * @return
     */
    private static double triangleArea(Point a, Point b, Point c) {
        double result = Math.abs((a.x * b.y + b.x * c.y + c.x * a.y - b.x * a.y - c.x * b.y - a.x * c.y) / 2);
        return result;
    }
    /**
     * 通过比较四边形面积与四边形各条边与p点组成三角形的面积和,得出点p是否在四边形内部
     * @param p
     */
    public void compare(Point p) {
        double quadArea = (triangleArea(p1, p2, p3) + triangleArea(p1, p2, p4) + triangleArea(p1, p3, p4) + triangleArea(p2, p3, p4)) / 2;
        double compareArea = triangleArea(p, p1, p2) + triangleArea(p, p2, p3) + triangleArea(p, p3, p4) + triangleArea(p, p4, p1);
        System.out.println(compareArea==quadArea?"在四边形内":"在四边形外");
    }

2. 实现类似MC连锁挖矿mod

在这里插入图片描述

在挖掉一格方块时,若有相同方块连接,则一起挖掉
在这里插入图片描述

思路

使用递归,在挖掉一格后,判断四个方向上有无相同方块,有则调用自身

代码

    public void destroyWhere(int i, int j){
        int flag = blocks[i][j].getMaterial();
        blocks[i][j].setMaterial(9);
        if (i < 4) {
            if (flag == blocks[i + 1][j].getMaterial()) {
                destroyWhere(i + 1, j);
            }
        }
        if (i > 0) {
            if (flag == blocks[i - 1][j].getMaterial()) {
                destroyWhere(i - 1, j);
            }
        }
        if (j < 4) {
            if (flag == blocks[i][j + 1].getMaterial()) {
                destroyWhere(i, j+1);
            }
        }
        if (j > 0) {
            if (flag == blocks[i][j - 1].getMaterial()) {
                destroyWhere(i, j-1);
            }
        }

    }

效果

挖第三行第三列

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于这两道,可以使用深度学习方法来解决。其中,可以采用卷积神经网络(Convolutional Neural Network, CNN)来实现图片分类任务。 1. 图片分类任务 首先,需要准备好图像数据集,包括训练集和测试集。对于本,可以使用MNIST数据集,该数据集包含了60000个28x28的手写数字图片作为训练集,以及10000个测试集。每个图片都以灰度图像的形式表示,因此每个图片都是一个28x28的矩阵。对于每个数字,都有一个对应的标签来表示其真实值。 然后,可以使用CNN模型来训练这个分类任务。CNN模型可以从图像中提取特征,然后使用全连接层将这些特征映射到对应的类别。经过多轮迭代训练,模型可以逐渐学习到正确的特征提取方式,并且正确分类测试集中的图片。 2. 图片生成任务 对于图片生成任务,可以使用生成对抗网络(Generative Adversarial Networks, GAN)来实现。GAN由两个神经网络组成,一个生成器(Generator)和一个判别器(Discriminator)。生成器的作用是接收一个随机噪声向量作为输入,然后生成一张新的图片。判别器的作用则是接收一张图片作为输入,然后判断这张图片是否为真实图片。两个神经网络通过对抗学习的方式进行训练,最终生成器可以生成逼真的图片,而判别器可以准确地区分真实图片和生成图片。 对于本,可以使用GAN模型来生成手写数字图片。首先,需要准备好一个训练集,包括真实图片和噪声向量。然后,可以使用生成器生成一张新的图片,并使用判别器对这张图片进行判断。通过不断迭代训练,生成器可以逐渐生成逼真的手写数字图片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值