викуля1101
18.05.2022 05:51

Сережа играет в Морской бой
Сережа играет в "Морской бой". Поле для игры представляет собой квадрат 10×10 клеток. На поле отмечены клетки, в которые Сережа уже стрелял. Однако, пока он не попал ни в один корабль противника. Требуется определить максимальную длину корабля, который может поместиться в небитых клетках этого поля. Корабль представляет собой прямоугольник ширины 1 и располагается горизонтально или вертикально. Гарантируется, что на поле есть хотя бы одна небитая клетка.

Входные данные

Вводятся 10 строк по 10 чисел в каждой, числа разделены пробелами. Число 1 означает, что в соответствующую клетку стреляли, число 0 — что в клетку не стреляли.

Выходные данные

Требуется вывести одно число от 1 до 10 — максимальную возможную длину корабля.
решите на c++
или python

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
daniilkornev05
11.04.2022 13:09
1. "Школьное" решение

// PascalABC.NET 3.0, сборка 1073
const
  sb='bcdfgjklmnpqrstvwxz';
  s='Computer programming is a process of computer programs creation';
var
  i,n:integer;
  s1,sn,t:string;
begin
  i:=1;
  while s[i]<>' ' do Inc(i);
  s1:=Copy(s,1,i-1);
  n:=Length(s); i:=n;
  while s[i]<>' ' do Dec(i);
  sn:=Copy(s,i+1,n-i);
  t:='';
  for i:=1 to Length(s1) do
    if Pos(s1[i],sb)>0 then t:=t+s1[i];
  s1:=t;
  t:='';
  for i:=1 to Length(sn) do
    if Pos(sn[i],sb)>0 then t:=t+sn[i];
  sn:=t;
  t:='';
  for i:=1 to Length(s1) do
    if Pos(s1[i],sn)>0 then
      if Pos(s1[i],t)=0 then t:=t+s1[i];
  for i:=1 to Length(t) do Write(t[i],' ');
  Writeln
end.
 
Тестовый прогон:
t r

2. "Нормальное" решение

// PascalABC.NET 3.0, сборка 1073
const
  sb='bcdfgjklmnpqrstvwxz';
  s='Computer programming is a process of computer programs creation';
begin
  var a:=s.ToWords(' ');
  a[0].Intersect(a[a.Length-1]).Where(x->Pos(x,sb)>0).Println(',')
end.

Тестовый прогон:
t,r
0,0(0 оценок)
Ответ:
Kunpaw
17.11.2022 17:40

1) ответ:

2^i=n

2^i=32

i=5

один символ=5 бит

2) 64=2⁶

следовательно ,требуется 6-разрядный двоичный код

3) 2^i=n, n = 16

2^i=16

i=4 бит

50 * 4 = 200 бит

200: 8 = 25 байт

4) используем формулу 2^i=n. так как в алфавите 16 символов (n=16), то  2^i=16, следовательно i=4. 4 бита весит один символ. 384*4=1536. 1536 бит весит сообщение из 384 символов по 4 бита каждый. переводим биты в байты. 1 байт=8 бит, 1536/8=192 байта. переводим байты в килобайты. 1 килобайт=1024 байт. 192/1024=0,1875 килобайт весит все сообщение. так что лучше ответ оставить в байтах (192 байта).

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота