Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Алгоритм]Поворот матрицы


Автор: IwantToBeProgrammer 8.7.2007, 22:03
Дана квадратная матрица X размером 10*10. К ней 3 раза подряд применяется приведённый ниже алгоритм по вариантам F,D,B соответственно. Каким должен быть пропущенный фрагмент чтобы однократное применение алгоритма к матрице дало тот же результат?

нач
n=10
нц для i от 1 до n
нц для j от 1 до n
Y[i;j]=X[i;j]
кц
кц

нц для i от 1 до n
нц для j от 1 до n
X[i;j]=Y[?]
кц
кц
кон 
 
F: [j, n+1-i] ;   D: [j,i] ;    B: [n+1-i, j]

Соответственно варианты ответов: 
G: [n+1-j, i]
H: [i, j]
E: [n+1-i,n+1-j]
F: [j, n+1-i]
A: [n+1-j, n+1-i]

Предполагаемое решение: разберём аналогичную матрицу 3*3 (123/456/789)
Применяя F получаем 369/258/147
После этого D: 789/456/123
И наконец B: 123/456/789
Соответствено однократный результтат будет и после варианта H(оригинал)
Но почему же тогда правильный вариант ответа E????? Как же так??????




Автор: JackYF 8.7.2007, 22:37
Цитата(IwantToBeProgrammer @  8.7.2007,  22:03 Найти цитируемый пост)
К ней 3 раза подряд применяется приведённый ниже алгоритм по вариантам F,D,B соответственно.


Цитата(IwantToBeProgrammer @  8.7.2007,  22:03 Найти цитируемый пост)
Предполагаемое решение: разберём аналогичную матрицу 3*3 (123/456/789)
Применяя F получаем 369/258/147
После этого D: 789/456/123
И наконец B: 123/456/789


по-моему, ты применяешь эти алгоритмы по разу, а не по три, пока чисто логически...

Автор: SelenIT 8.7.2007, 22:53
Насколько я понял, каждый по разу и надо, три - это в сумме...

А вот как после D (типа транспонирование) семерка из позиции [3,3] перекочевала в [1,1] - для меня загадка, либо я тормоз...

Автор: IwantToBeProgrammer 9.7.2007, 22:07
поясню как решал:
F - поворот на 90 град. против часовой стрелки => 369/258/147
D - зеркальное отражение от главной диагонали => 789/456/123
B - зеркальное отражение от горизонтали => 123/456/789
получаемто оригинал. ответ указан неверно по мнению системы ответов, которая не раз подводила.
в этом весь вопрос так или не так (оригинал или нет в итоге) а-то до момента когда всё это будет необходимо осталось чуть более суток((

Автор: Nite 10.7.2007, 11:28
По-моему, транспонирование относительно главной диагонали приведет к 369/258/147 => 321/654/987. Соответственно третий шаг будет => 987/654/321. Так что правильный ответ действительно Е.

Автор: IwantToBeProgrammer 10.7.2007, 18:57
Прошу прощения за мою грубейшую ошибку) я перепутал главную и побочную диагональ в массиве.
так что пасибо, тему можно закрывать)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)