| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Алгоритм] Интересная сумма элементов массива |
| Автор: Dmi3ev 10.11.2009, 21:59 | ||||
| Есть двумерный массив целых чисел. (Длина массива вводится) Нужно посчитать такую интересную сумму n m E E (-1)^(i+j) *a[i][j] i=1 j=1 Все довольно несложно, если бы не некоторые условия Вариант1
вариант2
Оба этих варианта не подходят, а именно: 1) условие в цикле использовать нельзя 2) операцию умножения, деления, возведения в степень тоже использовать нельзя Пока просто туплю и не могу найти алгоритма... Понимаю, что знаки чередуются, но как использовать правильно пока не ясно. |
| Автор: DarkProg 10.11.2009, 23:18 |
| А у меня есть идея тебе правда нужно два цикла Вот смотри для массива 4х4 у тебя коэффициенты будут 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 Первая идея заключается в том чтобы сложить сначала диагонали с единицей, а потом вычесть сумму диагоналей у которых коэффициент равен -1 Вторая идея заключается в том чтобы начать с ячейки [1,1] и от нее прибавляя шаг 2 по строке сложить числа в этой строке и прибавлять числа помимо [1,3] еще и сразу [3,1] (коэффициент ведь такой же), потом берем и переходим в ячейку [2,2] и делаем тоже самое. А потом начинаем следующий цикл, но там уже отнимаем из имеющейся суммы ячейки [1,2] и так же движемся по строке как и для сложения. Я надеюсь понятны идеи P.S. Просто все уже привыкли решать сложное, а напростоту просто не сообразим что это так просто - это сказал я сам. |
| Автор: TopMan 10.11.2009, 23:46 |
| Честно говоря, вся это система достаточно прозрачна(как с диагоналями, так и с построковым сложением), вся сложность заключается именно в её оформлении, а не понимании |
| Автор: Akina 10.11.2009, 23:46 |
| Третья идея заключается в том, чтобы тащить переменную с начальным значением 1, и на каждом витке домножать её на -1, а на неё - очередной элемент. Идея 4 - использовать домножение на 1 - 2 * ((i+j) mod 2) |
| Автор: TopMan 10.11.2009, 23:59 | ||
домножать нельзя элементы, если бы было можно, то там есть уже пример даже проще... Вариант 2 |
| Автор: Akina 11.11.2009, 00:08 |
| Ну используй 2 цикла с шагом 2. А цикл по третьей переменной (какой-нить k) с вычислением i и j внутри цикла допустим? |
| Автор: TopMan 11.11.2009, 00:54 | ||
| пока что вот так решил сделать Dmi3ev и я одно лицо...
через строку прохожусь Тупо или нет??? Может как-то оптимизировать, просто мои познания в паскале приближаются к 0... |