1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace sort_2 { class Program { static void Main(string[] args) { int[,] a = new int[4, 4]; int max; Random rnd = new Random(); for (int i = 0; i < 4; i++) for (int j = 0; j < 4; j++) a[i, j] = rnd.Next(10); Console.WriteLine(" Начальная состояние Максимальный и минимальный элемент массива"); for (int i = 0; i < 4; i++) { max = a[i, 0]; for (int j = 0; j < 4; j++) { if (a[i, j] > max) max = a[i, j]; Console.Write("t{0} ", a[i, j]); } Console.Write("t Max элемент = {0} | ", max); Console.WriteLine(); } Console.WriteLine("Сортировка Пузырком"); int z; for (int q = 1; q < 4; q++) { for (int i = 0; i < 4; i++) { for (int j = 0; j < 4 - q; j++) { if (1 % 2 == 0) { if (a[i, j + 1] < a[i, j]) { z = a[i, j + 1]; a[i, j + 1] = a[i, j]; a[i, j] = z; } } else { if (a[i, j + 1] > a[i, j]) { z = a[i, j + 1]; a[i, j + 1] = a[i, j]; a[i, j] = z; } } } } } for (int i = 0; i < 4; i++) { max = a[i, 0]; for (int j = 0; j < 4; j++) { if (a[i, j] < max) max = a[i, j]; Console.Write("t{0}", a[i, j]); } Console.Write("t Min элемент = {0} | ", max); Console.WriteLine(); } } } } |
#Как взять побочную (противоположную) диагональ массива? Требуется изменить обе диагонали массива на единицы
my_array = np.zeros((7, 7))
d = np.diag_indices(7)
my_array[d] = 1
[[1. 0. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0. 0.]
[0. 0. 0. 1. 0. 0. 0.]
[0. 0. 0. 0. 1. 0. 0.]
[0. 0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 0. 0. 1.]]
задан 9 июн 2022 в 17:41
Если массив состоит только из нулей, а не каких либо других значений, то можно сделать следующими тремя способами:
- При помощи функции
np.fliplr(), позволяющей перевернуть массив относительно оси X и представить главную диагональ как побочную и наоборот; - При помощи
np.flip(my_array, axis=1), по сути делающая то же самое при помощи аргументов; - При помощи срезов:
my_array[:,::-1]— это если забавы ради
import numpy as np
my_array = np.zeros((7, 7))
d = np.diag_indices(7)
my_array[d] = 1
np.fliplr(my_array)[d] = 1
# my_array[:,::-1][d] = 1
# np.flip(my_array, axis=1)[d] = 1
print(my_array)
Если говорить про общие решения, то могу предложить, например, развернуть второй член кортежа:
import numpy as np
my_array = np.zeros((7, 7))
d = np.diag_indices(7)
my_array[d] = 1
d = d[0], d[1][::-1]
my_array[d] = 1
print(my_array)
ответ дан 9 июн 2022 в 17:58
4500zenja4500zenja
3,9124 золотых знака9 серебряных знаков22 бронзовых знака
Ну вы перед тем как вопрос задавать — прочитайте этот форум ну хоть бы за три предыдущих дня.
Вот ваша задача и ваш ответ:
Как по аналогии сделать проверку на диагональ?
ответ дан 9 июн 2022 в 20:31
passantpassant
11.5k2 золотых знака9 серебряных знаков16 бронзовых знаков
Given a square matrix of order n*n, we have to reverse the elements of both diagonals.
Examples:
Input : {1, 2, 3,
4, 5, 6,
7, 8, 9}
Output :{9, 2, 7,
4, 5, 6,
3, 8, 1}
Explanation:
Major Diagonal Elements before: 1 5 9
After reverse: 9 5 1
Minor Diagonal Elements before: 3 5 7
After reverse: 7 5 3
Input :{1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12,
13, 14, 15, 16}
Output :{16, 2, 3, 13,
5, 11, 10, 8,
9, 7, 6, 12,
4, 14, 15, 1}
Implementation:
C++
#include <bits/stdc++.h>
using namespace std;
#define N 4
void reverseDiagonal(int array[][N])
{
int i = 0, j = N;
while (i < j) {
swap(array[i][i], array[j - 1][j - 1]);
swap(array[i][j - 1], array[j - 1][i]);
i++;
j--;
}
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j)
printf("%d ", array[i][j]);
printf("n");
}
}
int main()
{
int matrix[N][N] = { 1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12,
13, 14, 15, 16 };
reverseDiagonal(matrix);
return 0;
}
Java
import java.io.*;
class GFG
{
static int N = 4;
static void reverseDiagonal(int array[][])
{
int i = 0, j = N;
int temp = 0;
while (i < j)
{
temp = array[i][i];
array[i][i] = array[j - 1][j - 1];
array[j - 1][j - 1] = temp;
temp = array[i][j - 1];
array[i][j - 1] = array[j - 1][i];
array[j - 1][i] = temp;
i++;
j--;
}
for (i = 0; i < N; ++i)
{
for (j = 0; j < N; ++j)
System.out.print(array[i][j] + " ");
System.out.println();
}
}
public static void main (String[] args)
{
int matrix[][] = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
reverseDiagonal(matrix);
}
}
Python 3
N = 4
def reverseDiagonal(array):
i = 0
j = N
while (i < j) :
array[i][i], array[j - 1][j - 1] = array[j-1][j-1], array[i][i]
array[i][j - 1], array[j - 1][i] = array[j-1][i], array[i][j-1]
i += 1
j -= 1
for i in range(N):
for j in range( N):
print( array[i][j],end=" ")
print()
if __name__ == "__main__":
matrix = [[ 1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16 ]]
reverseDiagonal(matrix)
C#
using System;
class GFG
{
static int N = 4;
static void reverseDiagonal(int [,]array)
{
int i = 0, j = N;
int temp = 0;
while (i < j)
{
temp = array[i, i];
array[i, i] = array[j - 1, j - 1];
array[j - 1, j - 1] = temp;
temp = array[i, j - 1];
array[i, j - 1] = array[j - 1, i];
array[j - 1, i] = temp;
i++;
j--;
}
for (i = 0; i < N; ++i)
{
for (j = 0; j < N; ++j)
Console.Write(array[i, j] + " ");
Console.WriteLine();
}
}
public static void Main ()
{
int [,]matrix = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}};
reverseDiagonal(matrix);
}
}
PHP
<?php
function reverseDiagonal($array)
{
$N = 4;
$i = 0; $j = $N;
$temp = 0;
while ($i < $j)
{
$temp = $array[$i][$i];
$array[$i][$i] = $array[$j - 1][$j - 1];
$array[$j - 1][$j - 1] = $temp;
$temp = $array[$i][$j - 1];
$array[$i][$j - 1] = $array[$j - 1][$i];
$array[$j - 1][$i] = $temp;
$i++;
$j--;
}
for ($i = 0; $i < $N; ++$i)
{
for ($j = 0; $j < $N; ++$j)
echo $array[$i][$j] . " ";
echo "n";
}
}
$matrix = array(array(1, 2, 3, 4),
array(5, 6, 7, 8),
array(9, 10, 11, 12),
array(13, 14, 15, 16));
reverseDiagonal($matrix);
Javascript
<script>
let N = 4;
function reverseDiagonal(array)
{
let i = 0, j = N;
let temp = 0;
while (i < j)
{
temp = array[i][i];
array[i][i] = array[j - 1][j - 1];
array[j - 1][j - 1] = temp;
temp = array[i][j - 1];
array[i][j - 1] = array[j - 1][i];
array[j - 1][i] = temp;
i++;
j--;
}
for (i = 0; i < N; ++i)
{
for (j = 0; j < N; ++j)
document.write(array[i][j] + " ");
document.write("<br>");
}
}
let matrix = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]];
reverseDiagonal(matrix);
</script>
Output
16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
Time Complexity: O(N2) for printing the matrix
Auxiliary Space: O(1)
Last Updated :
20 Feb, 2023
Like Article
Save Article
Как найти сумму на обратной дагонали двухмерного массива?
Имеется двухмерный массив 5×5, нужно найти сумму на обратной диагонали.
Помогите пожалуйста никак не могу придумать алгоритм.
var result = document.getElementById("result");
var arr = [] , rand, sum = 0;
for(var i = 0; i < 5; i++) {
arr.push([]);
arr[i].push(rand);
for(var j = 0; j < 5; j++) {
rand = Math.floor(Math.random()*91 + 10);
arr[i][j] = rand;
result.innerHTML += arr[i][j]+ " | ";
}
}
JSFiddle
Пример:
-
Вопрос заданболее трёх лет назад
-
259 просмотров
«Обратные диагонали» характерны тем, что сумма координат X и Y в рамках одной диагонали постоянна. Алгоритм:
- подготовить массив сумм из (5 * 2 — 1) элемента, заполненный нулями.
- пройтись по всем элементам массива. Сложив координаты получаем id диагонали – он же индекс в массиве сумм.
- прибавляем текущий элемент к нужной сумме.
// суммы – где сумма координат X + Y = N, для каждой диагонали N постоянно
var side = 5,
sum = Array.apply(null, Array(side * 2 - 1)).map(Number.prototype.valueOf,0),
row, col
;
for( row = 0; row < side; row++) {
for( col = 0; col < side; col++) {
sum[row + col] += arr[row][col];
}
}
result.innerHTML += '<pre>' + JSON.stringify(sum) + '</pre>';
fiddle
Пригласить эксперта
arr[0][4] + arr[1][3] + arr[2][2] + arr[3][1] + arr[4][0]
?
для произвольного «квадратного» двумерного массива
let arr = [[1,2,3],[2,3,4],[3,4,5]];
let res = arr.reduce((res, curr, ind)=>{
return res + curr[curr.length - ind - 1];
},0);
console.log(res);
-
Показать ещё
Загружается…
29 мая 2023, в 16:43
7000 руб./за проект
29 мая 2023, в 16:37
500 руб./за проект
29 мая 2023, в 16:15
10000 руб./за проект
Минуточку внимания
|
03.09.2018, 14:31 |
|||
|
|||
|
Найти побочную диагональ двумерного массива js var matrix4D = [
1, 1, 1, 1,
1, 1, 1, 1,
1, 1, 1, 1,
1, 1, 1, 1
];
function_matrix(matrix4D);
/* alert(matrix4D); */
function function_matrix(arr){
var n = arr.length;
var step = Math.sqrt(arr.length) - 1;
for (var i = step; i < n - step; i += step) {
console.log(arr[i]);
alert(arr[i]);
}
}
Я ее нашел, но как сделать с такой матрицей как ниже ( выводит undefined ), помогите пожалуйста. var matrix4D = [ 1, 1, 1, 3, 1, 1, 6, 1, 1, 2, 1, 10, 9, 1, 1, 1, 1, 1, 11, 1 ];
или var matrix4D = [ 1, 2, 3, 4, 5, 1, 1, 1, 3, 4, 1, 1, 1, 1, 1, ]; |
|
03.09.2018, 14:54 |
||||
|
||||
|
|
|
03.09.2018, 15:12 |
||||
|
||||
|
Роман1479, var matrix4D = [
1, 1, 1, 1,
1, 1, 1, 1,
1, 1, 1, 1,
1, 1, 1, 1
];
var matrix4_D = [
1, 1, 1, 3,
1, 1, 6, 1,
1, 2, 1, 10,
9, 1, 1, 1,
1, 1, 11, 1
];
var matrix5D = [
1, 2, 3, 4, 5,
1, 1, 1, 3, 4,
1, 1, 1, 1, 1
];
function function_matrix(arr, num){
var l = Math.min(num, arr.length/num)
var n = --num;
var res = [];
for (var i = 0; i < l; i++) {
res.push(arr[n])
n += num
}
return res
}
alert(function_matrix(matrix4D, 4));
alert(function_matrix(matrix4_D, 4));
alert(function_matrix(matrix5D, 5));
|
|
03.09.2018, 15:12 |
|||
|
|||
|
Извините пожалуйста, значит все не правильно, можнте помочь написать тоже самое только с двумерным |
|
03.09.2018, 15:38 |
||||
|
||||
|
Роман1479, var matrix4D = [
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]
];
var matrix4_D = [
[1, 1, 1, 3],
[1, 1, 6, 1],
[1, 2, 1, 10],
[9, 1, 1, 1],
[1, 1, 11, 1]
];
var matrix5D = [
[1, 2, 3, 4, 5],
[1, 1, 1, 3, 4],
[1, 1, 1, 1, 1]
];
function function_matrix(arr){
var num = arr[0].length;
var l = Math.min(num, arr.length)
var n = --num;
var res = [];
for (var i = 0; i < l; i++) {
res.push(arr[i][n])
--n
}
return res
}
alert(function_matrix(matrix4D));
alert(function_matrix(matrix4_D));
alert(function_matrix(matrix5D));
|
|
03.09.2018, 16:16 |
||||
|
||||
|
Такой еще вариант предложу… var matrix4D = [
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]
];
var matrix4_D = [
[1, 1, 1, 3],
[1, 1, 6, 1],
[1, 2, 1, 10],
[9, 1, 1, 1],
[1, 1, 11, 1]
];
var matrix5D = [
[1, 2, 3, 4, 5],
[1, 1, 1, 3, 4],
[1, 1, 1, 1, 1]
];
alert(function_matrix(matrix4D));
alert(function_matrix(matrix4_D));
alert(function_matrix(matrix5D));
function function_matrix(arr){
var col = arr[0].length;
var row = 0;
var res = [];
while ((col > -1) && (row < arr.length)) {
res.push(arr[row++][--col]);
}
return res
};
|





