ВУЗ:
Составители:
Рубрика:
194
end.
Пример 11.56. Чтобы выявить самого драчливого разбойника, Али-Баба провел
турнир, во время которого каждый его разбойник дрался с каждым из оставшихся.
За победу присваивалось 7 очков, за ничью - 5, за поражение - 2. Результаты
турнира сведены в таблицу. Написать программу, определяющую победителя
турнира.
Решение. Результаты турнира удобно представить в виде двумерного массива.
По диагонали этого массива запишем нули, так как сам с собой разбойник не
дерется. Если Али выиграл у Гасана, то в строке Али на пересечении со столбцом
Гасан появится 7, а в строке Гасан на пересечении со столбцом Али появится 2.
Нетрудно заметить, что
клетки, содержащие результаты одного поединка,
расположены в клетках, симметричных относительно главной диагонали. При
таком представлении результатов задача сводится к нахождению сумм элементов
строк, а затем поиску максимальной суммы.
С
А и
Г л н
а а д
А с д б
л а и а Сумма набран-
и н н д ных очков
Али 0 7 2 5 14
Гасан 2 0 2 7 11
Аладин 7 7 0 5 19
Синдбад 5 2 5 0 12
Решение на Паскале запишется так:
program task11_56;
const m=10; { максимально возможное количество участников турнира }
var n : integer; { реальное количество участников турнира }
a : array [1..m,1..m] of integer; { турнирная таблица }
b : array [1..m] of integer; { суммы элементов строк }
i,j : integer; { индексы элементов массива }
k : integer; {индекс участника, набравшего наибольшее количество
очков}
begin
write('Введите n - количество участников турнира ');
readln(n);
write('Введите результаты турнира ');
for i:=1 to n do
for j:=1 to n do read(a[i,j]);
{ Находим суммы строк и записываем их в массив b }
for i:=1 to n do
begin b[i] := 0;
for j:=1 to n do b[i] := b[i]+a[i,j];
end;
194
end.
Пример 11.56. Чтобы выявить самого драчливого разбойника, Али-Баба провел
турнир, во время которого каждый его разбойник дрался с каждым из оставшихся.
За победу присваивалось 7 очков, за ничью - 5, за поражение - 2. Результаты
турнира сведены в таблицу. Написать программу, определяющую победителя
турнира.
Решение. Результаты турнира удобно представить в виде двумерного массива.
По диагонали этого массива запишем нули, так как сам с собой разбойник не
дерется. Если Али выиграл у Гасана, то в строке Али на пересечении со столбцом
Гасан появится 7, а в строке Гасан на пересечении со столбцом Али появится 2.
Нетрудно заметить, что клетки, содержащие результаты одного поединка,
расположены в клетках, симметричных относительно главной диагонали. При
таком представлении результатов задача сводится к нахождению сумм элементов
строк, а затем поиску максимальной суммы.
С
А и
Г л н
а а д
А с д б
л а и а Сумма набран-
и н н д ных очков
Али 0 7 2 5 14
Гасан 2 0 2 7 11
Аладин 7 7 0 5 19
Синдбад 5 2 5 0 12
Решение на Паскале запишется так:
program task11_56;
const m=10; { максимально возможное количество участников турнира }
var n : integer; { реальное количество участников турнира }
a : array [1..m,1..m] of integer; { турнирная таблица }
b : array [1..m] of integer; { суммы элементов строк }
i,j : integer; { индексы элементов массива }
k : integer; {индекс участника, набравшего наибольшее количество
очков}
begin
write('Введите n - количество участников турнира ');
readln(n);
write('Введите результаты турнира ');
for i:=1 to n do
for j:=1 to n do read(a[i,j]);
{ Находим суммы строк и записываем их в массив b }
for i:=1 to n do
begin b[i] := 0;
for j:=1 to n do b[i] := b[i]+a[i,j];
end;
Страницы
- « первая
- ‹ предыдущая
- …
- 190
- 191
- 192
- 193
- 194
- …
- следующая ›
- последняя »
