- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须找出矩阵(8x7)中有多少连续的垂直和对角线具有4个连续的相同值的数字。如果我是对的,则有2条垂直线和4条对角线。
2 1 1 6 1 0 0
2 1 1 7 6 0 1
1 1 7 1 6 1 1
9 7 6 0 1 1 6
7 9 1 1 6 9 0
7 5 9 2 2 2 0
7 5 9 9 9 9 0
7 1 1 1 1 0 0 0
但是当我运行它时:
垂直线数:3
有人知道如何解决此问题吗?我早些时候问过类似的问题,但是使用水平线,我应用了那里给出的内容,但是没有用。
我也很困惑如何找到对角线,有人知道怎么做吗?
public class Q5_Numbers{
public static void main(String[] args){
int[][] matrix = {
{2, 1, 1, 6, 1, 0, 0},
{2, 1, 1, 7, 6, 0, 1},
{1, 1, 7, 1, 6, 1, 1},
{9, 7, 6, 0, 1, 1, 6},
{7, 9, 1, 1, 6, 9, 0},
{7, 5, 9, 2, 2, 2, 0},
{7, 5, 9, 9, 9, 9, 0},
{7, 1, 1, 1, 1, 0, 0}
};
// # of vertical Lines = 2
System.out.printf("# of vertical lines: %d\n", findVertical(matrix));
// # of diagonal lines = 4;
System.out.printf("# of diagonal lines: %d\n", findDiagonal(matrix));
}
public static int findVertical(int[][] values){
int countV = 0;
int found = 0;
for(int j = 0; j < values[0].length; j++){
int current = values[0][j];
for(int i = 0; i < values.length; i++){
if(values[i][j] == current){
found++;
if(found == 4){
countV++;
found = 0;
}
}
}
}
return countV;
}
public static int findDiagonal(int[][] values){
...
}
}
最佳答案
介绍
为了让以后这个问题的读者受益,我将展示如何制定解决方案。
从问题:
我必须找出多少条垂直线和对角线连续4条
矩阵中相同值的数字(8x7)。
用更正式的方式说明这一点。
找到具有相同值的四个连续数字的垂直线的数量。
查找具有四个连续的相同值的对角线的数量。
首先,我们有一个二维数组。每行有7个值。每列有8个值。这意味着行索引从0到6,列索引从0到7。Java具有从零开始的索引。
int[][] matrix = {
{2, 1, 1, 6, 1, 0, 0},
{2, 1, 1, 7, 6, 0, 1},
{1, 1, 7, 1, 6, 1, 1},
{9, 7, 6, 0, 1, 1, 6},
{7, 9, 1, 1, 6, 9, 0},
{7, 5, 9, 2, 2, 2, 0},
{7, 5, 9, 9, 9, 9, 0},
{7, 1, 1, 1, 1, 0, 0}
};
int temp = matrix[0, 0];
if (matrix[1, 0] == temp && matrix[2, 0] == temp
&& matrix[3, 0] == temp) {
return true;
} else {
return false;
}
int temp = matrix[0, 0];
int temp = 2;
matrix[1, 0] = 2
是吗?
matrix[2, 0]
怎么样?等于2吗?
matrix[2, 0]
等于1。哦,发生了
else
条件,我们编写的代码返回了
false
。
int temp = matrix[0, 0];
if (matrix[1, 0] == temp && matrix[2, 0] == temp
&& matrix[3, 0]) {
return true;
} else {
return false;
}
int column = 0;
int temp = matrix[column, 0];
if (matrix[column + 1, 0] == temp && matrix[column + 2, 0] == temp
&& matrix[column + 3, 0]) {
return true;
} else {
return false;
}
for
循环!
int column = 0;
int temp = matrix[column, 0];
for (int i = column + 1; i < column + 4; i++) {
if (temp != matrix[i, 0]) {
return false;
}
}
return true;
for
循环。记住,我们的代码看起来像这样。
int column = 0;
int temp = matrix[column, 0];
if (matrix[column + 1, 0] == temp && matrix[column + 2, 0] == temp
&& matrix[column + 3, 0} == temp) {
return true;
} else {
return false;
}
column + 1
语句中的
if
。
column + 4
有点棘手。在
if
语句中,我们仅上至
column + 3
。那为什么
column + 4
呢?
for
循环。
for (int i = column + 1; i <= column + 3; i++) {
for
循环。
for
循环。
for (int i = column + 1; i < column + 4; i++) {
if (temp != matrix[i, 0]) {
return false;
}
false
。
if (matrix[column + 1, 0] == temp && matrix[column + 2, 0] == temp
&& matrix[column + 3, 0} == temp) {
private boolean checkVerticalLine(int column, int row,
int depth) {
int temp = matrix[column, row];
for (int i = column + 1; i < column + depth; i++) {
if (temp != matrix[i, row]) {
return false;
}
}
return true;
}
depth
)。这从我们的代码中删除了“幻数” 4。
int depth = 4;
int count = 0;
for (int column = 0; column <= (8 - depth); column++) {
for (int row = 0; row < 7; row++) {
if (checkVerticalLine(column, row, depth)) {
count++;
}
}
}
for
语句中使用了小于或等号,因为它使数学更容易。
int temp = matrix[0, 0];
if (matrix[1, 1] == temp && matrix[2, 2] == temp
&& matrix[3, 3] == temp) {
return true;
} else {
return false;
}
private boolean checkDiagonalLine1(int column, int row,
int depth) {
int temp = matrix[column, row++];
for (int i = column + 1; i < column + depth; i++) {
if (temp != matrix[i, row++]) {
return false;
}
}
return true;
}
row
值和
column
值。由于Java是传递引用,因此我们不会在调用方法中更改
row
的值。
int depth = 4;
int count = 0;
for (int column = 0; column <= (8 - depth); column++) {
for (int row = 0; row <= (7 - depth); row++) {
if (checkDiagonalLine1(column, row, depth)) {
count++;
}
}
}
int temp = matrix[0, 0];
if (matrix[1, -1] == temp && matrix[2, -2] == temp
&& matrix[3, -3] == temp) {
return true;
} else {
return false;
}
int temp = matrix[0, 3];
if (matrix[1, 2] == temp && matrix[2, 1] == temp
&& matrix[3, 0] == temp) {
return true;
} else {
return false;
}
private boolean checkDiagonalLine2(int column, int row,
int depth) {
int temp = matrix[column, row--];
for (int i = column + 1; i < column + depth; i++) {
if (temp != matrix[i, row--]) {
return false;
}
}
return true;
}
int depth = 4;
int count = 0;
for (int column = (depth - 1); column < 8; column++) {
for (int row = 0; row <= (7 - depth); row++) {
if (checkDiagonalLine2(column, row, depth)) {
count++;
}
}
}
关于java - 查找相同值的4个连续数字-垂直和对角线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61769523/
我有一个 6x6 数组,并且希望始终获取接下来的四个值。举个例子: 0----- -1---- --2--- ---3-- ----4- 所以我想得到所有对角线的 (0+1+2+3) 和 (1+2+3
我想遍历一个已转换为一维的二维方阵。 问题是我想遍历它,就像我在对角条中遍历原始 2D 一样。 该数组是对角数组,我最初使用一维的 malloc 创建它,以避免分配太多内存。 数组的大小: int T
“给定一个 2D 字符数组和一个字符串。 查找特定字符串是否出现在矩阵的对角线上。 private static boolean diagonalContains(char[][] grid,Stri
我有一个由 nxn 矩阵组成的 njxnj 矩阵。我想提取 nxn 矩阵的对角 j block 。即我想提取对角线(对于 n = 2,j = 4): 最有效的方法是什么? 最佳答案 要为元素建立索引,
这是一个 self 回答的问题。给定两个数据框, x 0 1 0 1 2 1 3 4 y 0 1 2 0 5 6 7 1 8 9 X 2 Y Z 0 x 和
我试图让我的程序打印出不等于幻方规则的行、列或对角线,例如,如果矩阵是 1 9 5 2 4 3 6 8 7 第 1 行 [2, 4, 3] 不起作用 第 2 行 [6, 8, 7] 不起作用 第 0
所以我有一个像这样的 4x4 矩阵 |0 1 2 3 -+------- 0|0 1 3 6 1|2 4 7 a 2|5 8 b d 3|9 c e f 并且我是按照其中的十六进制字符指定的顺序遍历
什么是获取正方形DataFrame的对角线的有效方法。我希望结果是一个 Series 和一个 MultiIndex 有两个级别,第一个是 DataFrame 的索引,第二个级别是DataFrame 的
问题:我正在尝试在 SwiftUI 中以矩形呈现对角线线性渐变。 我实现了一个标准的多点线性渐变,它在呈现为正方形时效果很好,但是当我将框架更改为矩形时,它有一些奇怪的行为,看起来更水平,或者有一些奇
我目前正在尝试找到一种在 C# for Excel 中使用 VSTO 的方法,以使用 C# 代码在单元格中绘制对角线。但我在网上找不到任何人甚至试图这样做。 有谁知道如何实现这一目标? 谢谢 (对不起
我需要删除图像中的线条,这最终是一个表格。我找到了一种删除水平线和垂直线的方法: convert 1.jpg -type Grayscale -negate -define morphology:co
我有一个如下所示的矩阵: ` matrix = [ ['P', 'o', 'P', 'o', 'P'], ['m', 'i', 'c', 's', 'r'], ['g', 'a', 'T', 'A',
如何在Python中按如下方式堆叠矩阵,使得父矩阵的元素在子矩阵的相同 block 对角点处形成 block 对角线。例子:我有四个矩阵 AA,AB,BA,BB 我想制作如附图所示的矩阵。 最佳答案
我在做一些统计。 我有数据框: tag a b c d e f a 5 2 3 2 0 1 b 2 4 3 2 0 1
我最近做了一个 Connect4 游戏,当我的 Connect4 向右对角线连接时,我的 Connect4 没有赢得游戏。并且它只适用于某些组合,当它连接到左边的对角线时。坐标:- 左上角:(0,0)
在 numpy 中有什么方法可以获取对角数组的引用吗?我希望我的数组对角线除以某个因子谢谢 最佳答案 如果 X 是你的数组,c 是因子, X[np.diag_indices_from(X)] /= c
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 6 年前。 Improve this ques
我有一个形状为 (m*n, m*n) 的张量,我想提取一个大小为 (n, m*n) 的张量,其中包含对角线上大小为 n*n 的 m 个块。例如: >>> a tensor([[1, 2, 0, 0],
我目前正在使用 matplotlib/pyplot 绘制 3d 对象,如下所示: fig = plt.figure().gca(projection='3d') plot = fig.plot_sur
好的,让我们考虑一个 64 位的数字,它的位组成一个 8x8 的表。 例如 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 0 0 1 1 0 1 0 1
我是一名优秀的程序员,十分优秀!