xiaoing.com©

开花即结果 提问即答案

Java语言实现棋盘选四子构成正方形的算法与方案计算
原始问题:

Java语言实现棋盘选四子构成正方形的算法与方案计算

以下是用Java语言实现该算法的代码:

import java.util.Scanner;

public class SquareCount {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        scanner.nextLine(); // 读取换行符

        char[][] chessboard = new char[n][m];
        for (int i = 0; i < n; i++) {
            String line = scanner.nextLine();
            for (int j = 0; j < m; j++) {
                chessboard[i][j] = line.charAt(j);
            }
        }

        int count = countSquares(chessboard);
        System.out.println(count);
    }

    private static int countSquares(char[][] chessboard) {
        int n = chessboard.length;
        int m = chessboard[0].length;
        int count = 0;

        // 遍历所有可能的正方形顶点
        for (int x1 = 0; x1 < n; x1++) {
            for (int y1 = 0; y1 < m; y1++) {
                if (chessboard[x1][y1] == 'X') {
                    for (int x2 = 0; x2 < n; x2++) {
                        for (int y2 = 0; y2 < m; y2++) {
                            if (chessboard[x2][y2] == 'X') {
                                int dx = x2 - x1;
                                int dy = y2 - y1;
                                int x3 = x2 + dy;
                                int y3 = y2 - dx;
                                int x4 = x1 + dy;
                                int y4 = y1 - dx;

                                if (isValidPoint(x3, y3, n, m) && isValidPoint(x4, y4, n, m)
                                        && chessboard[x3][y3] == 'X' && chessboard[x4][y4] == 'X') {
                                    count++;
                                }
                            }
                        }
                    }
                }
            }
        }

        return count;
    }

    private static boolean isValidPoint(int x, int y, int n, int m) {
        return x >= 0 && x < n && y >= 0 && y < m;
    }
}

使用该代码,你可以输入棋盘的大小和棋盘的布局,然后计算出小红有多少种选取四个棋子构成正方形的方案。

Java语言实现棋盘选四子构成正方形的算法与方案计算
https://www.xiaoing.com/zhidao/44433.html
AI / 模型Siliconflow
时间 / DATEAugust 13, 2023, 2:16 PM
语言zh-CN
IP / 区域 安徽 合肥