Составить программУ для следующих задач
Объяснение:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,k;
cin>>n>>m>>k;
if(k==m*n-1){
cout<<"IMPOSSIBLE";
return 0;
}
char a[n][m];
for(int i = 0; i<n; i++){
for(int j = 0; j<m; j++){
if(k>0){
a[i][j]='U';
k--;
cout<<'U';
} else if((a[i-1][j]=='U' || i==0) && i==n-1 && j!=m-1){
cout<<'R';
} else if((a[i-1][j]=='U' || i==0) && i==n-1 && j==m-1){
a[i][j] = 'L';
cout<<'L';
} else if(i==n-1 && a[i-1][j]!='U') {
cout<<'U';
} else {
cout<<'D';
}
}
cout<<endl;
}
return 0;
}
Объяснение
код написан на языке с++;
есть 5 случаев которые приведены в картинках ниже + случай когда n*m-1=k выводит Impossible
Очевидно, решения нет, если нужно выпустить ровно K = NM - 1 человека: он должен перейти в какую-то комнату, но из всех комнат, кроме его, есть путь наружу.
При всех остальных K можно, например, поступить так:
- отсчитать сверху и слева направо K комнат, в них открыть дверь вверх
- в оставшихся комнатах, не находящихся в нижнем ряду, открыть путь вниз
- в оставшихся комнатах нижнего ряда, кроме правого нижнего угла, открыть дверь вправо
- в правом нижнем углу, если там ещё не открыта дверь, открыть дверь влево
В итоге K человек уйдут с территории через верх, а остальные будут бесконечно ходить между двумя комнатами в правом нижнем углу.
Код (python 3):
N, M, K = map(int, input().split())
if K == N * M - 1:
print("IMPOSSIBLE")
elif K == N * M:
for _ in range(N):
print("U" * M)
else:
for _ in range(K // M):
print("U" * M)
if K // M < N - 1:
print("U" * (K % M) + "D" * (M - K % M))
for __ in range(N - 1 - K // M):
print("D" * M)
print("R" * (M - 1) + "L")
else:
print("U" * (K % M) + "R" * (M - K % M - 1) + "L")
Поделитесь своими знаниями, ответьте на вопрос:
Составить программы для следующих задач (сохранить в Паскале либо код скопировать в документ Word): №1. Вводится натуральное число N. Вывести все целые числа от N до 1. Пример: Входные данные: 5 Выходные данные: 5 4 3 2 1 №1. Вводятся два целых числа A и B. Вывести все нечетные числа от A до B, включая A и B. Пример: Входные данные: 3 10 Выходные данные: 3 5 7 9 №2. Вводятся два целых числа A и B. Вывести сумму всех чисел от A до B, включая A и B, которые заканчиваются на 7. Пример: Входные данные: 5 30 Выходные данные: 51 (Пояснение: 7+17+27 = 51)
Если не знаешь, как это делается, подсказываю: открываешь исходник Блокнотом, нажимаешь Ctrl+A (лат) , выделяется весь текст, нажимаешь Ctrl+Insert, весь выделенный текст копируется в буфер, открываешь документ в Ворде и нажимаешь Shift+Insert. Текст из буфера копируется на лист в Ворде.
А вот исходник открывать прямо в Ворде не советую - если чего испортишь случайно, потом он в Паскале не откроется.