Требуется определить общую формулу для чисел в ячейках матрицы `n times n` через соответствующие координаты ячеек `i` и `j`, где `i,j={0,1,2,...,n-1}`, при условии что числа последовательные и начинаются с 1.
Пример, матрица 3x3
123
456
789


@темы: Функции

Комментарии
14.10.2017 в 21:53

На плечах гигантов, на спинах электронов
Груша Вильямс, что-то я не поняла вопроса...
Вы вот про эту формулу?
`a_{ij}=n*i+(j+1)`
14.10.2017 в 22:17

Дилетант, быстро однако))) Про неё, а как её получить?
14.10.2017 в 22:22

На плечах гигантов, на спинах электронов
Груша Вильямс, как говорит All_ex, методом пристального вглядывания))
123
456
789
Мы видим, что для матрицы 3х3 элементы можно записать как:
0*3+1 0*3+2 0*3+3
1*3+1 1*3+2 1*3+3
2*3+1 2*3+2 2*3+3

Ну и делаем выводы )
14.10.2017 в 22:26

Эллипс - это круг, который можно вписать в квадрат 25х40
Дилетант, ...
14.10.2017 в 22:33

На плечах гигантов, на спинах электронов
All_ex, всматривания ...
Ага. Пришла исправить, но не успела )))
14.10.2017 в 22:49

Дилетант, мощно конечно))
читать дальше
14.10.2017 в 23:10

Эллипс - это круг, который можно вписать в квадрат 25х40
Груша Вильямс, Да с этим поиском в ширину сижу всё, пытаюсь придумать как по-человечески его написать.
когда-то на первом курсе писал программу с поиском в ширину... правда мне не число вариантов надо было искать, а просто кратчайший путь, но можно его модифицировать... использовал динамический массив ...
Заполняете матрицу нулями, а клетку начала единицей... и создаёте массив, котором сначала пишите номера (сточка;столбик) соседних с началом клеток...
Далее берёте элемент из очереди и добавляете в конец очереди её соседей с нулями... а в матрице для этой клетки пишите сумму всех соседей (их не более четырёх... тут нули ничего не испортят, а предшественники просуммируются)...
Далее этот элемент удаляется из очереди... так поступаете до тех пор пока не заполните клетку окончания...

простите, если объяснил опять неуклюже... :shuffle2:
14.10.2017 в 23:21

Эллипс - это круг, который можно вписать в квадрат 25х40
Кстати, наверное матрицу тоже прикольно создавать динамическим массивом... тогда для барьеров просто не будет ссылок для перехода... :upset:
14.10.2017 в 23:51

All_ex, хотелось бы без динамического массива, т.к. опыт работы с ним вблизи нуля, с другой стороны не так уж и отличается от обычного массива, а потому можно же и обычный объявить на n^2 элементов, чтоб наверняка? Переписать на динамический потом если что думаю проще пареной репы будет. Но честно говоря я так и не понял как это делают...и создаёте массив, котором сначала пишите номера (сточка;столбик) соседних с началом клеток то есть двумерный массив на 4 координаты правильно понимаю? Далее берёте элемент из очереди и добавляете в конец очереди её соседей с нулями а очередь это одномерный массив? Если да, то при инициализации туда нули пишем?
15.10.2017 в 00:34

All_ex, и создаёте массив, котором сначала пишите номера (сточка;столбик) соседних с началом клеток я понял так

15.10.2017 в 12:31

Эллипс - это круг, который можно вписать в квадрат 25х40
Груша Вильямс, непонятно, почему углы заполнены двойками... :upset:

У Вас есть заполненная `(-1)` матрица (символ того, что клетки ещё не осмотрены...... и пока пустой одномерный массив...
Сначала в угол (начальная точка) ставится 1, а в очередь ставятся клетки `[1;0]` и `[0;1]` - попутно заполняя матрицу нулями на этих местах...
`((1,0,-1), (0,-1,-1), (-1,-1,-1))` и `([1;0]; \ [0;1])`...

Теперь берём первую клетку из очереди - (1;0) - и добавляем в очередь её соседей с минус единицами - `([0;1] ; \ [2;0]; \ [1;1])`...
Добавленные клетки заполняем нулями в матрице... `((1,0,-1), (0,0,-1), (0,-1,-1))`... и вычисляем сумму допустимых соседей для `[1;0]` ... `((1,0,-1), (1,0,-1), (0,-1,-1))`...

И так далее...
16.10.2017 в 05:09

All_ex, я Вас понял, подправил немного только
У Вас есть заполненная `(-1)` матрица (символ того, что клетки ещё не осмотрены...... и пока пустой одномерный массив...
Сначала в угол (начальная точка) ставится 1, а в очередь ставятся клетки `[1;0]` и `[0;1]` - попутно заполняя матрицу нулями на этих местах...
`((1,0,-1), (0,-1,-1), (-1,-1,-1))` и `([1;0]; \ [0;1])`...

Теперь берём первую клетку из очереди - (1;0) - и добавляем в очередь её соседей с минус единицами - `([0;2] ; \ [2;0]; \ [1;1])`...
Добавленные клетки заполняем нулями в матрице... `((1,0,0), (0,0,-1), (0,-1,-1))`... и вычисляем сумму допустимых соседей для `[1;0]` ... `((1,0,0), (1,0,-1), (0,-1,-1))`...
И так далее...

Но как это написать пока не знаю)
Зато придумал следующее:
- делаем функцию соседей (в ее задачу входит принять координаты старта, проверить соседей, поставить волны и слить их координаты в массив);
- теперь у нас есть массив с координатами и надо бы их как-то скармливать этой функции.
По сути рекурсия -- отправили координаты, получили новые, отправили их, опять получили новые и так до тех пор пока пустые соседи есть.




Первый шаг отлично вот выводит, только не понятно как вот тут сейчас иксу присвоить дэйта[1][0], а игрику дэйту[1][1] и в вайл бы прямо тут)

непонятно, почему углы заполнены двойками... :upset: а в пэйнте я сам их на автомате расставил DD Можно считать это концом работы алгоритма)
16.10.2017 в 10:48

Эллипс - это круг, который можно вписать в квадрат 25х40
Ну, на мой взгляд сразу создавать весь массив не шибко рационально... ведь конечная клетка может попасться не последней...
хотя если интересует вопрос о числе кратчайших путей от начальной до любой, то перебирать всё равно придётся ...

С рекурсией - тоже не понял пока идеи... :upset: ... если Вы уже создали массив, то идёт просто перебор по всем клетками по очереди...

но всё же...
17.10.2017 в 18:10

All_ex, создавать весь массив не шибко рационально... да я пока хочу просто осуществить это, выражаясь математически - показать, что код существует))
С рекурсией - тоже не понял пока идеи... а вот кстати написать удалось, правда штук 8 глобальных переменных добавить пришлось, но насколько я понимаю пока программирование, то если пишется на глобальных, значит пишется и на локальных, правда писал программы только по учебе и всегда вроде бы удавалось и так, и эдак. Собственно упростить код ещё не пытался (то есть полностью согласен, что он мягко говоря сыроват) и, более того, на правильность не проверял, но вроде б работает :alles:
Рекурсия

17.10.2017 в 20:34

Эллипс - это круг, который можно вписать в квадрат 25х40
Груша Вильямс, Собственно упростить код ещё не пытался (то есть полностью согласен, что он мягко говоря сыроват)
Честно признаться, я так и не выучил С++ (писал на паскале)... :pom: ... поэтому с моей стороны тут критики нет... :alles: