Алекс23102027
15.09.2020 14:24

Всем привет. Застрял на задаче, не могу придумать, как написать код. Кто может Минное поле представляет собой прямоугольное поле размером N × M, разделенное на клетки размером 1 × 1. В некоторых клетках находятся мины (не более одной мины в клетке). Необходимо посчитать количество мин на поле.

Формат входных данных
Первая строка содержит числа n и m (1 ≤ n, m ≤ 103
), обозначая ширину и высоту поляны.
Следующие m строк содержат строки из n символов, которые описывают распределение мин при расчистке. Если я
символ в j-й строке имеет значение «.», это поле (i, j) пустое, и если оно имеет значение «x», то в этом поле
есть мина Поля (1, 1) и (n, m) всегда будут пустыми.

Формат выходных данных
Запишите одно целое число - количество путей, ведущих от поля (1, 1) к полю (n, m), так что на них нет мины, и есть только участки север → юг и восток → запад. Поскольку число путей может быть очень большим напишите остаток от деления этого числа на 10 ^ 9 + 7

Примеры

standard input
5 8
x

.xxx.
..x..

x.x..
...x.


standard output
12

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
lelikbalelik
10.02.2020 19:21
// PascalABC.NET 3.3, сборка 1555 от 21.10.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var n:=ReadInteger('Количество строк в массиве:');
  var m:=ReadInteger('Количество столбцов в массиве:');
  Writeln('*** Исходный массив [',n,',',m,'] ***');
  var a:=MatrRandom(n,m,-99,99);
  a.Println(4); Writeln(4*a.ColCount*'-');
  // Отсортировать массив по возрастанию в столбцах
  for var j:=0 to a.ColCount-1 do
    a.SetCol(j,a.Col(j).OrderBy(x->x).ToArray);
  Writeln('*** Массив, сортированный по колонкам ***');
  a.Println(4); Writeln(4*a.ColCount*'-');
  // элементы, записанные в обратном порядке в строках и в столбцах
  var b:=new integer[a.RowCount,a.ColCount];
  for var i:=0 to a.RowCount-1 do
    b.SetRow(i,a.Row(i).Reverse.ToArray);
  for var j:=0 to a.ColCount-1 do
    b.SetCol(j,b.Col(j).Reverse.ToArray);
  Writeln('*** Созданный массив ***'); b.Println(4)
end.

Пример
Количество строк в массиве: 4
Количество столбцов в массиве: 7
*** Исходный массив [4,7] ***
 -35  72 -60 -96  -3  13 -67
  86  55 -58 -58 -25  83  79
 -13  54  94 -87 -39   7  67
 -64 -87  41  22  38  25  33

*** Массив, сортированный по колонкам ***
 -64 -87 -60 -96 -39   7 -67
 -35  54 -58 -87 -25  13  33
 -13  55  41 -58  -3  25  67
  86  72  94  22  38  83  79

*** Созданный массив ***
  79  83  38  22  94  72  86
  67  25  -3 -58  41  55 -13
  33  13 -25 -87 -58  54 -35
 -67   7 -39 -96 -60 -87 -64
0,0(0 оценок)
Ответ:
akimdoge
27.12.2021 15:06
Судя, по ключевым словам надо написать программу на языке Pascal с использованием цикла с потусловием. Алгоритм может быть такой:
1. Создадим массив для хранения информации о количестве встретившихся цифр во введенном числе.
2. Ввод самого числа, далее в цикле находим остаток от деления на 10 и увеличиваем значение элемента массива с индексом равным получившемуся остатку на 1. Делим число нацело на десять. Повторяем пока число не равно 0.
3. Выводим результат. В массиве индекс элемента указывает на цифру числа, а значение элемента на количество этой цифры в числе. 

//РасаlABC.net v3.1

var a:array[0..9]of integer;

n,i,m: integer;

begin

  readln(n);

  repeat

    m:=n mod 10;

    inc(a[m]);

    n:=n div 10;

  until n<=0;

  for i := 0 to 9 do begin

    if a[i]>1 then writeln('Цифра:',i,' количество:', a[i]);

  end;

end.

Тестовый прогон:

1112333

Цифра:1 количество:3

Цифра:3 количество:3

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