Заполнение двумерного массива вихрем

239
04 сентября 2021, 16:50

Имеется массив n*n, необходимо его заполнить вихрем, т.е. что бы в центре было максимальное значение, а в первой ячейке минимальное(слева на право шло заполнение). Правильно ли, что это является метод заполнения массива делением отрезка пополам?

Answer 1
using System;
namespace helix_array
{
    class Program
    {
        const int N = 7;
        static void Main(string[] args)
        {
            int n = 0;
            int[,] helix = new int[N, N];
            int x0 = 0;
            int xn = N - 1;
            int y0 = 0;
            int yn = N - 1;
            while (n < N * N)
            {
                for (int x = x0; x <= xn; x++)
                {
                    helix[y0, x] = ++n;
                }
                y0++;
                for (int y = y0; y <= yn; y++)
                {
                    helix[y, xn] = ++n;
                }
                xn--;
                for (int x = xn; x >= x0; x--)
                {
                    helix[yn, x] = ++n;
                }
                yn--;
                for (int y = yn; y >= y0; y--)
                {
                    helix[y, x0] = ++n;
                }
                x0++;
            }
            for (int y = 0; y < N; y++)
            {
                for (int x = 0; x < N; x++)
                {
                    Console.Write("{0}\t", helix[y, x]);
                }
                Console.WriteLine();
            }
            Console.ReadKey();
        }
    }
}

Вывод:

1   2   3   4   5   6   7   
24  25  26  27  28  29  8   
23  40  41  42  43  30  9   
22  39  48  49  44  31  10  
21  38  47  46  45  32  11  
20  37  36  35  34  33  12  
19  18  17  16  15  14  13  

ideone

READ ALSO
Данные в select&#39;e не отображаются

Данные в select'e не отображаются

Подскажите, делаю запрос к AD и через консоль вижу все данные, но если пытаюсь добавить в select, то пишет ошибка, где я накосячил с кодом? Может...

197
Ошибка - Привязка SOAP 1.1 не найдена

Ошибка - Привязка SOAP 1.1 не найдена

Пытаюсь преобразовать WSDL в классы C# командой wsdl mainwsdl /l:C#, содержимое main

267
Не выводится правильный ответ

Не выводится правильный ответ

Вычислить с точностью E=10-10 значение,где 1/(1+x) ~ 1-x+x2-x3+

85
Округление float с точностью до 0.5

Округление float с точностью до 0.5

Каким образом можно округлять значение float после точки к 5?

242