Код для питона:
def solve(a):
def count(r,c):
return a[r][c] if r >= 0 and r < len(a) and c >= 0 and c < len(a[r]) and a[r][c] != None else 0
a[0][0] = 1
for step in range(1, len(a) + len(a[0]) - 1):
row, col = (0, step) if step < len(a[0]) else (step - len(a[0]) + 1, len(a[0]) - 1)
while col >= 0 and row < len(a):
if a[row][col] != None:
a[row][col] = count(row-1, col) + count(row, col-1)
row, col = row+1, col-1
return a[-1][-1]
Поле задаём в виде списка списков:
field = [
[0,0,0,0,0,None,None,None],
[0,0,None,0,0,0,0,None],
[0,0,0,0,0,0,0,0],
[0,None,0,0,0,0,0,0],
[0,0,0,0,None,0,0,0],
[0,0,0,0,0,0,0,0],
[None,None,0,0,0,None,0,0],
[None,None,0,0,0,0,0,0]
]
Объяснение:
Если нужно просто решение, то я приложил картинку
#include <iostream>
using namespace std;
int main()
{
int i,n,n2=0,n3,digit;
cin >> n; //Вводим число. Может быть отрицательным.
n3 = abs(n); //Для удаления цифр нужно положительное число
i = 1; //Переменная для количества десятков.
while(n3>0) { //Условия для выполнения цикла
digit = n3 % 10; //Получаем последнюю цифру
n3 = n3 / 10; //Уменьшаем число
if(digit!=3 && digit!=6){ //Проверка цифры
n2 = n2 + digit * i; //Создаем число умножая на десятки
i = i * 10; //Добавляем десятки
}
}
cout << ((n<0)?-n2:n2); //Вывод результата с добавление знака
}
Объяснение:
Есть цикл While
Поделитесь своими знаниями, ответьте на вопрос:
Дан массив целых чисел.вывести на экран сначала четные элементы массива, потом нечетные
begin
var n:=ReadInteger('Количество элементов в массиве: ');
var a:=ArrRandom(n,-50,50);
a.Println(',');
Writeln('Четные элементы: ');
var i:=1;
while i<n do begin Write(a[i],' '); Inc(i,2) end;
Writeln;
Writeln('Нечетные элементы: ');
i:=0;
while i<n-1 do begin Write(a[i],' '); Inc(i,2) end;
Writeln
end.
Тестовое решение:
Количество элементов в массиве: 10
15,-18,-29,-25,46,21,-8,-17,-9,15
Четные элементы:
-18 -25 21 -17 15
Нечетные элементы:
15 -29 46 -8 -9