分治学习之棋盘覆盖问题(java)

本文详细探讨了使用分治策略来解决棋盘覆盖问题的方法,通过Java编程语言实现。通过对问题进行分解,递归地解决子问题,最后将结果合并,达到解决问题的目的。文章深入浅出地解释了算法思路,并提供了清晰的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package FZ;
/*
2 0 3 3
2 2 1 3
4 1 1 1
4 4 1 1
棋盘一个特殊点用L型的棋子进行覆盖
//进行分治法计算 然后分成更小的 比如4分成2,2,2,2 的矩阵 然后进行继续分 分成1,1,1,1的标明其他非特殊点
 */
public class ChessBoradProblem {
    private int[][] board;//棋盘
    private int specialRow;//特殊的行
    private int specialCol;//特殊的列、
    private int size;
    private int type=0;
    public ChessBoradProblem(int specialRow,int specialCol,int size){
        this.specialRow=specialRow;
        this.specialCol=specialCol;
        this.size=size;
        this.board=new int[size][size];
    }
    /*
        board棋盘
        specialRow特殊行
        specialCol特殊的列
        leftRow矩阵最左边的行
        leftCol矩阵最左边的列
        size 棋盘的大小
     */
    private void ChessBoard(int specialRow,int specialCol,int leftRow,int leftCol,int size){

        if (size==1){
            return;
        }
        int subsize=size/2;
        type=type%4+1;
        int n=type;
            //特殊点在左上角
            if (specialRow<leftRow+subsize&&am
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值