Рубрики

Сумма обеих диагоналей спиральной квадратной матрицы нечетного порядка

Мы дали спиральную матрицу нечетного порядка, в которой мы начинаем с числа 1 в качестве центра и движемся вправо по часовой стрелке.

Примеры :

Input : n = 3 
Output : 25
Explanation : spiral matrix = 
7 8 9
6 1 2
5 4 3
The sum of diagonals is 7+1+3+9+5 = 25

Input : n = 5
Output : 101
Explanation : spiral matrix of order 5
21 22 23 23 25
20  7  8  9 10
19  6  1  2 11
18  5  4  3 12
17 16 15 14 13
The sum of diagonals is 21+7+1+3+13+
25+9+5+17 = 101

Если мы более внимательно посмотрим на спиральную матрицу nxn, мы можем заметить, что верхний правый угловой элемент имеет значение n 2 . Значение верхнего левого угла — (n ^ 2) — (n-1) [Почему? мы не двигаемся по часовой стрелке в спиральной матрице, поэтому мы получаем значение верхнего левого угла после вычитания n-1 из верхнего правого] Аналогичным образом значения нижнего левого угла — (n ^ 2) — 2 (n-1), а нижнего правого угла — (n ^ 2) — 3 (n-1). После добавления всех четырех углов получаем 4 [(n ^ 2)] — 6 (n-1).

Пусть f (n) сумма диагональных элементов для матрицы тревожности. Используя приведенные выше наблюдения, мы можем рекурсивно записать f (n) как:

f(n) = 4[(n^2)] – 6(n-1) + f(n-2)  

Из приведенного выше соотношения можно найти сумму всех диагональных элементов спиральной матрицы с помощью итерационного метода.

spiralDiaSum(n)
{
    if (n == 1)
       return 1;

    // as order should be only odd
    // we should pass only odd-integers
    return (4*n*n - 6*n + 6 + spiralDiaSum(n-2));
}

Ниже приведена реализация.

C ++

// C ++ программа для поиска суммы
// диагонали спиральной матрицы
#include<bits/stdc++.h>

using namespace std;

  
// функция возвращает сумму диагоналей

int spiralDiaSum(int n)

{

    if (n == 1)

        return 1;

  

    // так как порядок должен быть только нечетным

    // мы должны передавать только нечетные числа

    return (4*n*n - 6*n + 6 + spiralDiaSum(n-2));

}

  
// Драйвер программы

int main()

{

    int n = 7;

    cout <<  spiralDiaSum(n);

    return 0;

}

Джава

// Java-программа для поиска суммы
// диагонали спиральной матрицы

  

class GFG 

{

    // функция возвращает сумму диагоналей

    static int spiralDiaSum(int n)

    {

        if (n == 1)

            return 1;

      

        // так как порядок должен быть только нечетным

        // мы должны передавать только нечетные числа

        return (4 * n * n - 6 * n + 6

                     spiralDiaSum(n - 2));

    }

      

    // Программа драйвера для тестирования

    public static void main (String[] args) 

    {

        int n = 7;

        System.out.print(spiralDiaSum(n));

    }

}

  
// Этот код предоставлен Anant Agarwal.

python3

# Python3 программа для поиска суммы
# диагонали спиральной матрицы

  
# функция возвращает сумму диагоналей

def spiralDiaSum(n):

      

    if n == 1:

        return 1

  

    # как порядок должен быть только нечетным

    # мы должны передать только нечетное

    # целые числа

    return (4 * n*n - 6 * n + 6 +

               spiralDiaSum(n-2))

      
# Драйверная программа

n = 7;

print(spiralDiaSum(n))

  
# Этот код предоставлен Anant Agarwal.

C #

// C # программа для поиска суммы
// диагонали спиральной матрицы

using System;

  

class GFG  {

      

    // функция возвращает сумму диагоналей

    static int spiralDiaSum(int n)

    {

        if (n == 1)

            return 1;

      

        // так как порядок должен быть только нечетным

        // мы должны передавать только нечетные числа

        return (4 * n * n - 6 * n + 6 + 

                spiralDiaSum(n - 2));

    }

      

    // Код драйвера

    public static void Main (String[] args) 

    {

        int n = 7;

        Console.Write(spiralDiaSum(n));

    }

}

  
// Этот код предоставлен parashar ...

PHP

<?php
// PHP программа для поиска суммы
// диагонали спиральной матрицы

  
// функция возвращает сумму
// диагоналей

function spiralDiaSum( $n)

{

    if ($n == 1)

        return 1;

  

    // так как порядок должен быть только нечетным

    // мы должны передавать только нечетные числа

    return (4 * $n * $n - 6 * $n + 6 +

                spiralDiaSum($n - 2));

}

  
// Код драйвера

$n = 7;

echo spiralDiaSum($n);

  
// Этот код предоставлен anuj_67.
?>

Выход :

261

Эта статья предоставлена Шивам Прадхан (anuj_charm) . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Сумма обеих диагоналей спиральной квадратной матрицы нечетного порядка

0.00 (0%) 0 votes