В матрице поменять местами столбец с минимальной суммой со столбцом с максимальной - C#
Формулировка задачи:
Дана прямоугольная матрица n x m целых чисел. Поменять местами столбец с минимальной суммой со столбцом с максимальной суммой .
Решение задачи: «В матрице поменять местами столбец с минимальной суммой со столбцом с максимальной»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
int n = 4;
int m = 8;
int[,] arr = new int[n, m];
int[] sum = new int[m];
for (int j = 0; j < n; j++)
{
sum[j] = 0;
}
Random rand = new Random();
for (int j = 0; j < m; j++)
{
for (int i = 0; i < n; i++)
{
arr[i, j] = rand.Next(1, 15); //Заполняем массив
}
}
for (int j = 0; j < m; j++)
{
for (int i = 0; i < n; i++)
{
Console.Write(arr[i, j] + "\t"); //Выводим начальную матрицу
}
Console.WriteLine();
}
Console.WriteLine("\n\n");
int k = 0;
for (int j = 0; j < m; j++)
{
for (int i = 0; i < n; i++)
{
sum[k] += arr[i, j]; //Считаем сумму по столбцам
}
k++;
}
int max = sum[0];
int index_of_max = 0;
for (int j = 0; j < n; j++)
{
if (max < sum[j])
{
max = sum[j]; //Находим максимальную сумму и запоминаем её индекс
index_of_max = j;
}
}
int min = sum[0];
int index_of_min = 0;
for (int j = 0; j < n; j++)
{
if (min > sum[j])
{
min = sum[j]; //Находим минимальную сумму и запоминаем индекс
index_of_min = j;
}
}
int tmp = 0;
for (int j = 0; j < m; j++)
{
tmp = arr[index_of_max, j];
arr[index_of_max, j] = arr[index_of_min, j]; //Обмениваем столбцы местами
arr[index_of_min, j] = tmp;
}
for (int j = 0; j < m; j++)
{
for (int i = 0; i < n; i++)
{
Console.Write(arr[i, j] + "\t"); //Выводим результат
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}