二维数组计算对角个数算法

原创 2018年04月15日 15:06:07

有一个任意二位数组,且元素为0或1, 求该二位数组的对角个数?

对角的定义:四个角都是1的四边形即为一个对角。

/**
 * @desc 计算对角的个数
 *
 */
public class Test {
	public static void main(String[] args) {
		int m = 5;
		int n = 6;
		int a[][] = initTable(m, n);
		print(a, m, n);
		int count = count(a, m, n);
		System.out.println("对角个数为:" + count);
	}

	/**
	 * @param m
	 * @param n
	 * @return
	 * @desc 初始化一个m行n列的数组
	 */
	public 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;
	}

	/**
	 * @param a
	 * @param m
	 * @param n
	 * @desc 打印这个数组
	 */
	public 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();
		}
	}

	/**
	 * @param a
	 * @param m
	 * @param n
	 * @return 对角的个数
	 * @desc 计算数组对角个数
	 */
	public 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;
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fhm6100411074/article/details/79949434

二维数组对角线打印

美团招聘CRM后端Java工程师的题目: http://www.iteye.com/topic/1134016   其中的题目要求如下: 二维数组(N*N),沿对角线方向,从右上角打印到左下角...
  • clamaa
  • clamaa
  • 2017-04-11 09:50:12
  • 912

Java--二维数组中对角线的一边为相同的数字

二维数组中对角线的一边为相同的数字
  • kevinlee1
  • kevinlee1
  • 2017-04-16 21:30:49
  • 392

二维数组(矩阵)对角线输出

{ 1, 2, 3, 4 },  { 5, 6, 7, 8 }, { 9, 10, 11, 12 },  { 13, 14, 15, 16 },
  • jiaobuchong
  • jiaobuchong
  • 2014-05-20 11:52:40
  • 2345

编写一个C#程序,要求定义一个行数和列数相等的二维数组, 并执行初始化,然后计算并输出数组两条对角线上的元素之和。

解法一(只针对2x2数组): using System;using System.Collections.Generic;using System.Linq;using System.Text; ...
  • H_lukong
  • H_lukong
  • 2015-10-11 08:26:49
  • 3154

计算01矩阵中的0Group的数量 二维数组表示

题目源自于待字闺中的微信。 题目:给定一个n*n的board里面是0或1算出里面独立的0group的数量。比如 0 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 0 1 1 1 1 1 ...
  • luckyjoy521
  • luckyjoy521
  • 2013-10-16 16:45:23
  • 1487

编写程序输入一个n*n的矩阵,求出两条对角线元素值之和(注意把输入的元素写入二维数组的方式)

#include using namespace std; int main() { int sum = 0; int n = 0; int **array;//指向整型的指针的指针. co...
  • hannea
  • hannea
  • 2013-08-21 11:02:47
  • 3296

二维数组排列对角线求和-C描述

二维数组排列对角线求和-C描述 #define N 3 int a[N][N] = { 0 }; int num = 1; for (int i = 0; i < N*N; i++) ...
  • zuiaisha1
  • zuiaisha1
  • 2017-02-10 10:08:15
  • 388

8.10 输入n*n阶矩阵,用函数编程计算并输出其两条对角线上的各元素之和

#include #define M 100 int main() { int a[M][M],i,j,msum = 0,ssum = 0; int N; ...
  • qq_40392733
  • qq_40392733
  • 2017-12-28 20:48:00
  • 310

数值计算-线性方程组求解(2)-追赶法解三对角矩阵-MATLAB实现

问题描述  在用差分法求解二阶常微分方程的边值问题、热传导问题及三次样条插值函数的求解问题中,都会遇到下面形式的阶数较高的三对角方程组AX=fAX=f,即 ⎡⎣⎢⎢⎢⎢⎢⎢⎢b1a2⋱c1b2an−...
  • baidu_33351337
  • baidu_33351337
  • 2017-10-26 01:06:41
  • 393

二维数组计算4*4矩阵对角线上的元素之和

import java.util.Scanner; public class Test2DArrayPractice { public static void main(Strin...
  • Franzzi
  • Franzzi
  • 2017-05-02 22:08:14
  • 1058
收藏助手
不良信息举报
您举报文章:二维数组计算对角个数算法
举报原因:
原因补充:

(最多只允许输入30个字)