понедельник, 5 декабря 2011 г.

Решение олимпиадных задач

Разноцветные мячи
 Для каждой полки нужно определить количество мячей разного цвета. Для этого можно воспользоваться массивом из 10 элементов по количеству цветов и записать в него сколько мячей каждого цвета содержится на каждой полке (двумерный массив: строчек - n, столбцов - 10). После чего остается посчитать количество ненулевых элементов данного массива (количество мячей разного цвета) на каждой полке и сохранить это в одномерном массиве, размерностью n. Выполнив такую операцию, можно найти номер искомой полки, выбрав полку с максимальным номером.


  1. вводим N, M
  2. вводим от руки массив размерностью n на m, состоящий из чисел от 1 до 10 (номера цветов)
  3. Формируем второй двумерный массив (по количеству цветов), в котором столбцы - номера цветов, строки - номера полок, на каждом [i,j] -ом месте будет стоять количество цветов j на полке с номером i.
  4. В сформированном массиве по количеству цветов находим количество ненулевых элементов в каждой строке и записываем значение в одномерный массив размерностью n (по количеству полок)  
  5. Находим максимальный элемент в одномерном массиве и выводим его индекс.
Решение:
program mych;
var n,m,i,j,k,d,h:integer;
a:array[1..50,1..50] of integer;
b:array[1..50,1..10] of integer;
c:array[1..50] of integer;
begin
readln(n,m);

for i:=1 to n do
 begin
for j:=1 to m do
     read(a[i,j]);
     writeln;
     end;
    
for i:=1 to n do
begin
  for j:=1 to m do
     begin
    for k:=1 to 10 do
     if a[i,j]=k then b[i,k]:=b[i,k]+1;
     end;end;


for i:=1 to n do
  begin
for j:=1 to 10 do
write(b[i,j]:3); writeln;
end;
for i:=1 to n do
begin
   for j:=1 to 10 do
   if b[i,j]<>0 then c[i]:=c[i]+1;
   end;
   for i:=1 to n do
   write(c[i]:3);
d:=c[1];h:=1;
for i:=1 to n do
if (c[i]>d) then  begin d:=c[i];h:=i; end;
writeln(h);
 end.

Комментариев нет:

Отправить комментарий