Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2013, 21:26   #1
GreeNYA
 
Регистрация: 18.04.2011
Сообщений: 5
Восклицание Двумерный массив. Найти минимальную сумму |Aij-Akj|. i,k - строки

В двумерном массиве MxN найти строки с минимальной суммой модулей поэлементной разности.

Пояснение:

Допустим, дан массив 4х4. Надо найти минимальную сумму модулей поэлементной разницы между строками 1 и 2, 1 и 3, 1 и 4, 2 и 3, 2 и 4, 3 и 4.
Т.е. чем больше размерность, тем больше вычислений.

Пока лишь смог реализовать поиск между i и i+1 строками
Код:
void tested(int M, int N, int A[M][N])
{
int i,k,j,new_i,new_k,SumBetweenStr,SumBetweenEl;
new_i=1;
for (i=1; i<=M; i++) {
  k=i+1;
  if (k>M) continue;
  SumBetweenStr=0;
  for (j=1; j<=N; j++) {
    SumBetweenEl=abs(A[new_i][j]-A[k][j]);
    printf("|[%d][%d]-[%d][%d]|=|%d-%d|=%d\n", new_i,j,k,j,A[new_i][j],A[k][j],SumBetweenEl);
    SumBetweenStr=SumBetweenStr+SumBetweenEl; }
    printf("Сумма модулей между строками %d и %d равна %d\n\n", new_i,k,SumBetweenStr); }
}
Вот что выводит:

85 88 96
52 10 37
46 36 26
88 75 27
71 10 81

|[1][1]-[2][1]|=|85-52|=33
|[1][2]-[2][2]|=|88-10|=78
|[1][3]-[2][3]|=|96-37|=59
Сумма модулей между строками 1 и 2 равна 170

|[1][1]-[3][1]|=|85-46|=39
|[1][2]-[3][2]|=|88-36|=52
|[1][3]-[3][3]|=|96-26|=70
Сумма модулей между строками 1 и 3 равна 161

|[1][1]-[4][1]|=|85-88|=3
|[1][2]-[4][2]|=|88-75|=13
|[1][3]-[4][3]|=|96-27|=69
Сумма модулей между строками 1 и 4 равна 85

|[1][1]-[5][1]|=|85-71|=14
|[1][2]-[5][2]|=|88-10|=78
|[1][3]-[5][3]|=|96-81|=15
Сумма модулей между строками 1 и 5 равна 107


Как быть дальше? %)

Последний раз редактировалось GreeNYA; 28.11.2013 в 22:26.
GreeNYA вне форума Ответить с цитированием
Старый 29.11.2013, 15:29   #2
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
По умолчанию

Цитата:
Сообщение от GreeNYA Посмотреть сообщение
В двумерном массиве MxN найти строки с минимальной суммой модулей поэлементной разности.

Пояснение:

Допустим, дан массив 4х4. Надо найти минимальную сумму модулей поэлементной разницы между строками 1 и 2, 1 и 3, 1 и 4, 2 и 3, 2 и 4, 3 и 4.
Т.е. чем больше размерность, тем больше вычислений.

Пока лишь смог реализовать поиск между i и i+1 строками
Код:
void tested(int M, int N, int A[M][N])
{
int i,k,j,new_i,new_k,SumBetweenStr,SumBetweenEl;
new_i=1;
for (i=1; i<=M; i++) {
  k=i+1;
  if (k>M) continue;
  SumBetweenStr=0;
  for (j=1; j<=N; j++) {
    SumBetweenEl=abs(A[new_i][j]-A[k][j]);
    printf("|[%d][%d]-[%d][%d]|=|%d-%d|=%d\n", new_i,j,k,j,A[new_i][j],A[k][j],SumBetweenEl);
    SumBetweenStr=SumBetweenStr+SumBetweenEl; }
    printf("Сумма модулей между строками %d и %d равна %d\n\n", new_i,k,SumBetweenStr); }
}
Вот что выводит:

85 88 96
52 10 37
46 36 26
88 75 27
71 10 81

|[1][1]-[2][1]|=|85-52|=33
|[1][2]-[2][2]|=|88-10|=78
|[1][3]-[2][3]|=|96-37|=59
Сумма модулей между строками 1 и 2 равна 170

|[1][1]-[3][1]|=|85-46|=39
|[1][2]-[3][2]|=|88-36|=52
|[1][3]-[3][3]|=|96-26|=70
Сумма модулей между строками 1 и 3 равна 161

|[1][1]-[4][1]|=|85-88|=3
|[1][2]-[4][2]|=|88-75|=13
|[1][3]-[4][3]|=|96-27|=69
Сумма модулей между строками 1 и 4 равна 85

|[1][1]-[5][1]|=|85-71|=14
|[1][2]-[5][2]|=|88-10|=78
|[1][3]-[5][3]|=|96-81|=15
Сумма модулей между строками 1 и 5 равна 107


Как быть дальше? %)
При вычислении записываешь все в массив и ищешь минимальный элемент.
Может это и чушь, но это моя чушь и я ее никому не отдам.
Shad0wF1rst вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерный массив. Определить минимальную сумму элементов строки двумерного массива vralayala Паскаль, Turbo Pascal, PascalABC.NET 3 23.09.2013 08:45
Дан двумерный массив. Найти сумму и количество элементов в каждом столбце, положительных и лежащих вне главной диагонали Alexbmgn Помощь студентам 1 25.12.2011 22:21
Двумерный массив. Найти среднее арифметическое каждой строки и поместить на место наибольшего (Паскаль) Золушка Паскаль, Turbo Pascal, PascalABC.NET 4 13.04.2011 13:33
В строках таблицы,содержащих наибольшее кол-во нулей, найти минимальную в строке сумму абсолютных величин Bga Помощь студентам 2 07.12.2009 00:52