给一个二维数组,横纵坐标随机,里面数值要么是1,要么是0,统计对角是1的个数

本文主要是介绍给一个二维数组,横纵坐标随机,里面数值要么是1,要么是0,统计对角是1的个数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题:给一个二维数组,横纵坐标随机,里面数值要么是1,要么是0,统计对角是1的个数?

解析 :

首先说一下,怎样的算对角,框成一个矩形是1的就是对角,四点在直线上的值为1组成矩形就算对角。如下图,框起来的都算对角。统计它里面对角的个数?怎么算呢?


1. 如果要是对角,肯定一开始那个值为1,它在数组里面的坐标是i,j,即a[i][j] =1。

2.还要计算其他三个点是1,就需要在i,j的基础上往下探测,长度是横坐标的长度,图中是7(下标为0,1,2,3,4,5,6),也需要在j的基础上往右探测,图中的是6(下标为 0,1,2,3,4,5)。

好了算法讲完了,下面给下实现代码:

public class MyTest {public static void main(String[] args) {int m = 15;
        int n = 23;
        int a[][] = initTable(m, n);
        print(a, m, n);
        int count = count(a, m, n);
        System.out.println("个数为:" + count);

    }static int[][] initTable(int m, int n) {int[][] a = new int[m][n];
        for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {a[i][j] = Math.random() > 0.5 ? 1 : 0;  //设置值为0 或1
            }}return a;
    }static void print(int a[][], int m, int n) {for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {System.out.print(a[i][j]);
            }System.out.println();
        }}static int count(int a[][], int m, int n) {int count = 0;
        for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (a[i][j] == 1) {for (int p = i + 1; p < m; p++) {for (int q = j + 1; q < n; q++) {if (a[p][q] == 1 && a[p][j] == 1 && a[i][q] == 1) {count++;
                            }}}}}}return count;
    }
}

执行结果:

01001010001010000111111
01111111100101110110001
00001101101101101010110
10101111111001001101111
11111101111110100111001
11110100100100000001110
01011010101100011111101
01101010010011110111110
10001000010000100011000
11110101111100101110000
01111110100110011101101
01100000110111010001011
11000100000010110111000
00011110011100011011111
10111101100100110001100

个数为:2457

说明:代码中的m是横坐标的长度,n是纵坐标的个数!


这篇关于给一个二维数组,横纵坐标随机,里面数值要么是1,要么是0,统计对角是1的个数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036580

相关文章

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

JAVA数组中五种常见排序方法整理汇总

《JAVA数组中五种常见排序方法整理汇总》本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录前言:法一:Arrays.sort()法二:冒泡排序法三:选择排序法四:反转排序法五:直接插入排序前言:几种常用的Java数组排序

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a