|
0 / 0 / 0
Регистрация: 24.02.2021
Сообщений: 7
|
|
"Диагональная" нумерация матрицы24.02.2021, 13:29. Показов 9179. Ответов 17
Здравствуйте, у меня есть квадратная матрица размера n, и в этой матрице находятся числа от 1 до n^2, расположенные следующим образом:
1 3 4 10 11 21 22 2 5 9 12 20 6 8 13 19 7 14 18 15 17 16 И так далее. Мне нужно, зная номер числа, узнать номер столбца и строки, в котором он находится. Заранее спасибо за ответы.
0
|
|
| 24.02.2021, 13:29 | |
|
Ответы с готовыми решениями:
17
Диагональная форма матрицы
|
|
|
|
| 24.02.2021, 18:34 | |
|
Это раздел форума по базам данных. Они тут ваще не при чём.
И да, для вашей задачи возможны различные решения. Я вижу три. 1. Нарисовать большой треугольник и тупо запомнить индексы. 2. Рисовать змейку, пока не дойдём до нужного числа, и 3. Аналитическое, но тут надо думать.
0
|
|
|
|
|
| 24.02.2021, 19:04 | |
|
Lesage, чтобы перенести тему - надо просить модератора.
Насчёт аналитического решения - ну тут явно номер "диагонали" (назовём так расстояние до начала отсчёта по диагонали) растёт квадратично. То есть надо составить квадратное уравнение и решить его.
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2021
Сообщений: 7
|
|
| 24.02.2021, 19:29 [ТС] | |
|
Да, я заметил некоторые особенности, более того, номера на крайней горизонтали и крайней вертикали соответствуют последовательностям
a(n) = if n mod 2 == 0 then n*(n+1)/2, otherwise (n-1)*n/2 + 1. -- горизонталь a(n) = n*(n+1)/2 if n is odd, otherwise (n-1)*n/2 + 1. -- вертикаль Но пока не понимаю, как это можно использовать.
0
|
|
|
|
|
| 25.02.2021, 09:45 | |
|
Пусть а - номер диагонали, которую оступаем, в направлении вправо-вниз. То, что направление чисел там чередуется, игнорируем, развернуть ряд чисел - это тривиально.
Пусть f(a) - маскимальное число на этой диагонали. Тогда f(1) = 1. f(2) = 1+2. f(3)=1+2+3. f(a)=a(a+1)/2=a^2/2+a/2. В диагонали ровно а чисел, поэтому минимальное = (а^2/2+a/2)-a+1 = a^2/2-a/2+1. Ну вот вам и два квадратных неравенства.
1
|
|
|
0 / 0 / 0
Регистрация: 24.02.2021
Сообщений: 7
|
||||||
| 25.02.2021, 11:57 [ТС] | ||||||
|
Я думаю, что решил эту проблему:
Кажется, у меня есть решение, вот код на питоне:
Далее, мы смотрим на чётность номера диагонали. По совместительству это количество чисел на диагонали, и простейшим образом вычисляем позицию числа в матрице. Можно поэкспериментировать.
0
|
||||||
|
0 / 0 / 0
Регистрация: 24.02.2021
Сообщений: 7
|
|
| 25.02.2021, 13:40 [ТС] | |
|
Ну не совсем перебор, мы же ищем конкретную диагональ, на которой лежит число, так что это скорее "метод научного тыка"))
К тому же скорость тут довольно приемлемая, при увеличении числа в 100 раз время выполнения программы увеличивается в 10 раз, то есть сложность sqrt(n) Хотя безусловно можно быстрее
0
|
|
|
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
|
||
| 25.02.2021, 14:23 | ||
|
Lesage,
0
|
||
|
|
||||||
| 25.02.2021, 17:03 | ||||||
|
Тут можно было и простой массив использовать, просто я забыл как сделать, чтобы он выводился в форме квадрата.
1
|
||||||
|
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
|
||||||
| 25.02.2021, 18:01 | ||||||
Сообщение было отмечено Lesage как решение
Решение
Lesage,
1
|
||||||
|
Заблокирован
|
|
| 26.02.2021, 20:37 | |
|
Господа, подскажите как заполнить матрицу таким способом.
0
|
|
|
Заблокирован
|
|
| 01.03.2021, 16:57 | |
|
неужели ни кто не знает?
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2021
Сообщений: 7
|
|
| 01.03.2021, 18:20 [ТС] | |
|
Du raker, У вас есть решение задачи как зная номер, понять расположение. Вам надо решить обратную задачу -- зная расположение, присвоить элементу соответствующий номер. В чём проблема?
Ну и залить это всё в цикл по всем элементам матрицы, конечно
0
|
|
|
Заблокирован
|
|
| 01.03.2021, 20:53 | |
|
0
|
|
|
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
|
|
| 01.03.2021, 22:34 | |
|
Du raker, Вывести матрицу змейкой
0
|
|
| 01.03.2021, 22:34 | |
|
Помогаю со студенческими работами здесь
18
Алгоритм, который для матрицы возвращает 0, если матрица не диагональная
Нумерация матрицы
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|