ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »