![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| dajver |
|
||||
![]() заблудившийся Профиль Группа: Участник Сообщений: 26 Регистрация: 1.1.2007 Где: Диптаун Репутация: нет Всего: нет |
Итак, дан двумерный массив 8 на 8, заполненный случайным образом.
Его нужно преобразовать в одномерный массив по следующей схеме: .Моя программа:
Если я правильнопонял компилятор:
то у меня происходит выход за границы массива. Подскажите, пожалуйста, в чем моя ошибка. p.s. Под хордой квадрата я понимаю любую прямую линию из элементов массива, параллельную побочной диагонали. |
||||
|
|||||
| Norb |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 26.1.2007 Репутация: нет Всего: нет |
Ну я постараюсь ответить наиболее полно и в меру своих пониманий дела.
Но скажу откровенно, что сам алгоритм я не понял в принципе, но и свою версию пока что придумал в общих чертах, но реализовать пока не пытался, так что может он и не верный. Мои домыслы: Вот выдержка из программы:
Во-первых: у тебя массивы
то есть i и j строго меньше n, и значит, что никогда не выполнится условие (j==n) Далее что касается выхода за пределы массива. у тебя i и j пробегают в пределах от 0 до n, точнее до n-1. В таком случае максимальное значение k=n-1+n-1+1=2*n-1, а m=(2*n-1)(2*n-2)/2=(n-1)(2*n-1)=2*n*n - 3*n +1. Значит в выражении
|
||||||||
|
|||||||||
| dajver |
|
|||
![]() заблудившийся Профиль Группа: Участник Сообщений: 26 Регистрация: 1.1.2007 Где: Диптаун Репутация: нет Всего: нет |
Да, спасибо, и с первым (просто запутался с итерацией) и со вторым (как раз, ошибка алгоритма).
Буду думать дальше. |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Вот примерный вариант решения. Я его не проверял, но идея вроде бы верная. Нарекаю алгоритмом маятника.
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| sergejzr |
|
||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 6 Всего: 360 |
Что-то когда-то здесь писал на эту тему...
Цикл можно заменить на:
Скорее всего у nornad будет поэлегантнее. Добавлено @ 04:21 А вообще оптимальное решение - это где-то в JPEG алгоритме |
||||
|
|||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
В алгоритме (моём) была ошибка. Вот исправленный вариант:
Всё-таки код проверять стоит. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |