1) Допустим, бумагу мы сложим в бак 3. Это будет 83 + 58 = 141. Тогда в бак 2 надо сложить стекло или жесть.
1) а) Допустим, мы в бак 2 сложили стекло. Это будет 52 + 85 = 137. Тогда в бак 1 кладем жесть. Это будет 95 + 75 = 170. Всего 141 + 137 + 170 = 448 перемещений.
1) б) Допустим, мы в бак 2 сложили жесть. Это будет 64 + 75 = 139. Тогда в бак 1 кладем стекло. Это будет 98 + 85 = 183. Всего 141 + 139 + 183 = 463 > 448.
2) Допустим, бумагу мы сложили в бак 2. Это опять 83 + 58 = 141. 2) а) Кладем в бак 3 стекло. Это будет 98 + 52 = 150. Тогда в бак 1 кладем жесть. Это будет 95 + 75 = 170. Всего 141 + 150 + 170 = 461 > 448.
2) б) Кладем стекло в бак 1. Это будет 98 + 85 = 183. Тогда в бак 3 кладем жесть. 64 + 95 = 159 Всего 141 + 183 + 159 = 483 > 448.
3) Положим бумагу в бак 1. Это будет 83 + 83 = 166. 3) а) Положим стекло в бак 2. Это будет 52 + 85 = 137. Тогда жесть пойдет в бак 3. 64 + 95 = 159. Всего 166 + 137 + 159 = 465 > 448.
3) б) Положим стекло в бак 3. Это будет 52 + 98 = 150. Тогда жесть пойдет в бак 2. Это будет 64 + 75 = 139. Всего 166 + 150 + 139 = 455 > 448.
Я рассмотрел все 6 вариантов разложить 3 мусора по 3 бакам. ответ: минимальное количество перемещений равно 448.
//PascalABC.NET (версия 3.1, сборка 1196 от 09.03.2016) function Transpose(a: array[,] of integer): array[,] of integer; //Поворот на 90гр по часовой стрелке begin var m := Length(a, 0); var n := Length(a, 1); Result := new integer[n, m]; for var i := 0 to n-1 do begin for var j := 0 to m-1 do Result[i, j] := a[m-1-j, i]; end; end;
begin var n := ReadInteger('Введите n:'); //Заполнение матрицы NxN сл. числами и вывод на экран var a :=MatrixRandom(n, n); for var i:=0 to n-1 do begin for var j:=0 to n-1 do Print(a[i,j]); println; end; println;
Println('поворот влево на 90 гр'); var b := Transpose(a); b:=Transpose(b); b:=Transpose(b); for var i:=0 to n-1 do begin for var j:=0 to n-1 do Print(b[i,j]); println; end; println;
Println('поворот вправо на 90гр'); b := Transpose(a); for var i:=0 to n-1 do begin for var j:=0 to n-1 do Print(b[i,j]); println; end; println;
Println('поворот на 180 гр'); b := Transpose(a); b := Transpose(b); for var i:=0 to n-1 do begin for var j:=0 to n-1 do Print(b[i,j]); println; end; end.
//Pascal ABC.NET 3.1 сборка 1219
uses
GraphABC;
Var
n,i:integer;
s:string;
begin
readln(n);
for i:=1 to n do
s:=s+chrunicode(random(65535));
DrawTextCentered(0,0,windowwidth,windowheight,s);
end.