М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
муля15
муля15
17.03.2023 16:53 •  Информатика

Дана матрица a(n,m). поменять местами её максимальный и минимальный элементы

👇
Ответ:
movnar98
movnar98
17.03.2023
// PascalABC.NET 3.2, сборка 1379 от 21.01.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var m:=ReadInteger('Количество строк в матрице:');
  var n:=ReadInteger('Количество столбцов в матрице:');
  Writeln('*** Исходная матрица [',m,',',n,'] ***');
  var a:=MatrRandom(m,n,-99,99);
  a.Println(4); Writeln(4*a.ColCount*'-');
  var b:=a.Rows.SelectMany(x->x).ToArray;
  var mx:=b.IndexMax; var mn:=b.IndexMin;
  Swap(a[mx div n,mx mod n],a[mn div n,mn mod n]);
  Writeln('*** Матрица-результат ***'); a.Println(4);
end.

Пример
Количество строк в матрице: 5
Количество столбцов в матрице: 6
*** Исходная матрица [5,6] ***
  22  72  95 -18  48  15
 -25  72  73  45 -62  75
  49  95 -32  20  66  48
  55   7  57 -98  -8  94
  78  50 -49  73   0 -74

*** Матрица-результат ***
  22  72 -98 -18  48  15
 -25  72  73  45 -62  75
  49  95 -32  20  66  48
  55   7  57  95  -8  94
  78  50 -49  73   0 -74
4,8(24 оценок)
Открыть все ответы
Ответ:
yakormnevzad
yakormnevzad
17.03.2023

1

var

mas:array[1..100] of integer;

i,n:integer;

en,out:text;

res:real;

qw,qwe:string;  

begin

 n:=0;

 i:=1;

 write('Введите полный путь к импортируемому файлу: ');readln(qw);

 write('Введите полный путь к экспортируемому файлу: ');readln(qwe);

 assign(en,qw+'.txt'); assign(out,qwe+'.txt');  

 reset(en); rewrite(out);

 while not Eof(en) do    

 begin

 readln(en,mas[i]);      

 n:=n+mas[i];                

 inc(i);        

 end;

   res:=(n/(i-1));  

   write(out,res);  

   close(out);      

   close(en);

 end.

Там во вторую тупо добавляешь:

 max:=-100001;

 min:=100001;

if (mas[i]<0) and (mas[i] mod 2 = 0) and (mas[i]<min) then min:=mas[i];

 if (mas[i]>0) and (mas[i] mod 2 = 1) and (mas[i]>max) then max:=mas[i];  

if (max=-100001)or(min=100001) then writeln(out,'ERROR: please, rewrite yor file')

 else  

 begin

   writeln(out,min);

   writeln(out,max);  

Тоже такие же задачи решал)) лол). Ты не из 604??)))

4,7(42 оценок)
Ответ:
natalijamatijch
natalijamatijch
17.03.2023
Каждая из компонент связности должна быть кликой (иначе говоря, каждые две вершины в одной компоненте связности должны быть связаны ребром). Если в i-ой компоненте связности n_i вершин, то общее число рёбер будет суммой по всем компонентам связности:

\displaystyle \sum_{i=1}^K\frac{n_i(n_i-1)}2=\frac12\sum_{i=1}^K n_i^2-\frac12\sum_{i=1}^Kn_i=\frac12\sum_{i=1}^K n_i^2-\frac N2

Требуется найти максимум этого выражения (т.е. на самом деле - максимум суммы квадратов) при условии, что сумма всех ni равна N и ni - натуральные числа.

Если K = 1, то всё очевидно - ответ N(N - 1)/2. Пусть K > 1.

Предположим, n1 <= n2 <= ... <= nK - набор чисел, для которых достигается максимум, и n1 > 1. Уменьшим число вершин в первой компоненте связности до 1, а оставшиеся вершины "перекинем" в K-ую компоненту связности. Вычислим, как изменится сумма квадратов:
\Delta(\sum n_i^2)=(1^2+(n_K+n_1-1)^2)-(n_1^2+n_K^2)=2(n_1-1)(n_K-1)
Поскольку по предположению n1 > 1 (тогда и nK > 1), то сумма квадратов увеличится, что противоречит предположению о том, что на выбранном изначально наборе достигается максимум. Значит, максимум достигается, если наименьшая по размеру компонента связности - изолированная вершина. Выкинем эту компоненту связности, останутся K - 1 компонента связности и N - 1 вершина. Будем продолжать так делать, пока не останется одна вершина, тогда получится, что во всех компонентах связности кроме последней должно быть по одной вершине.

Итак, должно выполняться
n_1=n_2=\cdots=n_{K-1}=1;\qquad n_K=N-K+1

Подставив в исходную формулу, получаем
\displaystyle\frac{(N-K)(N-K+1)}{2}

Это и есть ответ.
4,7(55 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ