Пример возврата с Python ⇐ Python
Пример возврата с Python
2 -1 -1
-1 -1 2
-1 2 -1 -1
-1 -1 -1 0
Л Р Л Р
У У Л Р
Д Д Л Р
Это пример вывода, и L R U D означает влево вправо Вверх вниз, и вы можете думать об этом как о кусочках домино. Описание изображения, введенное здесь, показывает, сколько H и B следует использовать в этой строке и столбце. Если число равно -1, это означает, что ограничений нет. если мы поместим B в ячейку L, то ячейка R должна быть H, если мы поместим H в ячейку L, ячейка R должна быть B. Потому что это фишка домино. То же самое для U и D. Есть условие, при котором мы не можем помещать одни и те же символы рядом и снизу вверх. И нет решения для B и H, поместите туда N. B означает «Базовый», H означает «Высокий», а «N» означает «Нейтральный». Используйте возврат. Пример вывода для этого ввода: B H B H
Ч Б Н Н
Б Х Б Ч
left = [2, -1, -1] вправо = [-1, -1, 2] вверх = [-1, 2, -1, -1] вниз = [-1, -1, -1, 0] matris_check = [ ["Л", "П", "Л", "П"], ["У", "У", "Л", "Р"], ["Д", "Д", "Л", "П"] ] lenx = len(matris_check[0]) лени = лен(matris_check) матрис = [ [Нет, Нет, Нет, Нет], [Нет, Нет, Нет, Нет], [Нет, Нет, Нет, Нет] ] список = ["H", "B", "N"] defsolve(matris, list, matris_check, lenx, leny, i=0, j=0): защита fill_others(): если matris_check[j] == "L" и matris[j] == "B": матрис[j + 1] = "H" если matris_check[j] == "L" и matris[j] == "H": матрис[j + 1] = "B" если matris_check[j] == "U" и matris[j] == "B": матрис[i + 1][j] = "H" если matris_check[j] == "U" и matris[j] == "H": матрис[i + 1][j] = "B" если matris_check[i][j] == "L" и matris[i][j] == "N": матрис[i][j+1] = "N" если matris_check[i][j] == "U" и matris[i][j] == "N": матрис[i+1] = "N" защита check_around(): если i > 0 и (matris[i][j] == "B" и matris[i - 1][j] == "B"): вернуть ложь если j > 0 и (matris[i][j] == "B" и matris[i][j - 1] == "B"): вернуть ложь если i < leny - 1 и (matris[i][j] == "B" и matris[i + 1][j] == "B"): вернуть ложь если j < lenx - 1 и (matris[i][j] == "B" и matris[i][j + 1] == "B"): вернуть ложь если i > 0 и (matris[i][j] == "H" и matris[i - 1][j] == "H"): вернуть ложь если j > 0 и (matris[i][j] == "H" и matris[i][j - 1] == "H"): вернуть ложь если i < leny - 1 и (matris[i][j] == "H" и matris[i + 1][j] == "H"): вернуть ложь если j < lenx - 1 и (matris[i][j] == "H" и matris[i][j + 1] == "H"): вернуть ложь если j == ленкс: вернуть решение (matris, list, matris_check, lenx, leny, i + 1, 0) Элиф я == Лени: возвращаться еще: для письма в списке: если matris[i][j] равен None: если check_around(): matris[i][j] = буква fill_others() решить(matris, list, matris_check, lenx, leny, i, j+1) решить(matris,list,matris_check,lenx,leny,0,0) print(*matris, sep='\n') это мой код, но я не могу контролировать возврат и значения H, B
2 -1 -1
-1 -1 2
-1 2 -1 -1
-1 -1 -1 0
Л Р Л Р
У У Л Р
Д Д Л Р
Это пример вывода, и L R U D означает влево вправо Вверх вниз, и вы можете думать об этом как о кусочках домино. Описание изображения, введенное здесь, показывает, сколько H и B следует использовать в этой строке и столбце. Если число равно -1, это означает, что ограничений нет. если мы поместим B в ячейку L, то ячейка R должна быть H, если мы поместим H в ячейку L, ячейка R должна быть B. Потому что это фишка домино. То же самое для U и D. Есть условие, при котором мы не можем помещать одни и те же символы рядом и снизу вверх. И нет решения для B и H, поместите туда N. B означает «Базовый», H означает «Высокий», а «N» означает «Нейтральный». Используйте возврат. Пример вывода для этого ввода: B H B H
Ч Б Н Н
Б Х Б Ч
left = [2, -1, -1] вправо = [-1, -1, 2] вверх = [-1, 2, -1, -1] вниз = [-1, -1, -1, 0] matris_check = [ ["Л", "П", "Л", "П"], ["У", "У", "Л", "Р"], ["Д", "Д", "Л", "П"] ] lenx = len(matris_check[0]) лени = лен(matris_check) матрис = [ [Нет, Нет, Нет, Нет], [Нет, Нет, Нет, Нет], [Нет, Нет, Нет, Нет] ] список = ["H", "B", "N"] defsolve(matris, list, matris_check, lenx, leny, i=0, j=0): защита fill_others(): если matris_check[j] == "L" и matris[j] == "B": матрис[j + 1] = "H" если matris_check[j] == "L" и matris[j] == "H": матрис[j + 1] = "B" если matris_check[j] == "U" и matris[j] == "B": матрис[i + 1][j] = "H" если matris_check[j] == "U" и matris[j] == "H": матрис[i + 1][j] = "B" если matris_check[i][j] == "L" и matris[i][j] == "N": матрис[i][j+1] = "N" если matris_check[i][j] == "U" и matris[i][j] == "N": матрис[i+1] = "N" защита check_around(): если i > 0 и (matris[i][j] == "B" и matris[i - 1][j] == "B"): вернуть ложь если j > 0 и (matris[i][j] == "B" и matris[i][j - 1] == "B"): вернуть ложь если i < leny - 1 и (matris[i][j] == "B" и matris[i + 1][j] == "B"): вернуть ложь если j < lenx - 1 и (matris[i][j] == "B" и matris[i][j + 1] == "B"): вернуть ложь если i > 0 и (matris[i][j] == "H" и matris[i - 1][j] == "H"): вернуть ложь если j > 0 и (matris[i][j] == "H" и matris[i][j - 1] == "H"): вернуть ложь если i < leny - 1 и (matris[i][j] == "H" и matris[i + 1][j] == "H"): вернуть ложь если j < lenx - 1 и (matris[i][j] == "H" и matris[i][j + 1] == "H"): вернуть ложь если j == ленкс: вернуть решение (matris, list, matris_check, lenx, leny, i + 1, 0) Элиф я == Лени: возвращаться еще: для письма в списке: если matris[i][j] равен None: если check_around(): matris[i][j] = буква fill_others() решить(matris, list, matris_check, lenx, leny, i, j+1) решить(matris,list,matris_check,lenx,leny,0,0) print(*matris, sep='\n') это мой код, но я не могу контролировать возврат и значения H, B
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение