Отримання знань

дистанційна підтримка освіти школярів


Тут ви можете виконати завдання чи задати питання по змiсту цього уроку.

Михальов Володимир (StarRover) 2013-10-17 10:26:29
{Next}
const
max=12;
var
s,n,i,j:longint;
f:boolean;
a,b:array[1..max] of longint;
Procedure Swap(var a,b:longint);
var
c:longint;
begin
c:=a; a:=b; b:=c;
end;
begin
ReadLn(n);
f:=True;
for i:=1 to n do Read(a[i]);
i:=n-1;
while (i>0)and(a[i+1]<=a[i]) do i:=i-1;
if i>0 then begin
j:=n;
while (j>i)and(a[j]<=a[i]) do j:=j-1;
Swap(a[i],a[j]);
for j:=i+1 to (n+i)div 2 do
Swap(a[j],a[n-j+i+1]);
end
else f:=False;
for i:=1 to n do Write(a[i],' ');
WriteLn;
WriteLn(f);
end.
Михальов Володимир (StarRover) 2013-10-17 10:27:03
{Perestanovki}
const
max=12;
var
s,n,i,j:longint;
f:boolean;
a,b:array[1..max] of longint;
Procedure Swap(var a,b:longint);
var
c:longint;
begin
c:=a; a:=b; b:=c;
end;
Procedure PrintMas;
var
l:longint;
begin
for l:=1 to n do Write(a[l],' ');
WriteLn;
end;
begin
ReadLn(n);
f:=True;
for i:=1 to n do a[i]:=i;
PrintMas;
repeat
i:=n-1;
while (i>0)and(a[i+1]<=a[i]) do i:=i-1;
if i>0 then begin
j:=n;
while (j>i)and(a[j]<=a[i]) do j:=j-1;
Swap(a[i],a[j]);
for j:=i+1 to (n+i)div 2 do
Swap(a[j],a[n-j+i+1]);
end
else f:=False;
if f then PrintMas;
until not f;
end.
Михальов Володимир (StarRover) 2013-10-17 10:44:09
Знайдіть всі можливі перестановки ряду N випадкових додатніх цілих чисел від 1 до K.
-----------------------
{Perestanovki1}
const
max=100;
var
s,k,kt,n,i,j:longint;
f:boolean;
a:array[1..max] of longint;
Procedure Swap(var a,b:longint);
var
c:longint;
begin
c:=a; a:=b; b:=c;
end;
Procedure InitMas;
var
p:longint;
begin
for p:=1 to n do
Read(a[p]);
end;
Procedure SortMas;
var
ii,jj:longint;
begin
for jj:=1 to n-1 do
for ii:=1 to n-jj do
if a[ii]>a[ii+1] then Swap(a[ii],a[ii+1]);
end;
Procedure PrintMas;
var
l:longint;
begin
for l:=1 to n do Write(a[l],' ');
WriteLn;
end;
begin
ReadLn(n,k);
InitMas;
SortMas;

f:=True;
PrintMas;
kt:=1;
while (kt i:=n-1;
while (i>0)and(a[i+1]<=a[i]) do i:=i-1;
if i>0 then begin
j:=n;
while (j>i)and(a[j]<=a[i]) do j:=j-1;
Swap(a[i],a[j]);
for j:=i+1 to (n+i)div 2 do
Swap(a[j],a[n-j+i+1]);
end
else f:=False;
if f then PrintMas;
kt:=kt+1;
end;
end.
Михальов Володимир (StarRover) 2013-10-17 13:18:15
Beads
============================
Дано N<=100 намистинок. Спочатку вони не пофарбовані. Дозволено пофарбувати a намистинок в червоний колір, b намитстинок - в синій та c - в жовтий. Позначимо кожну червону намистинку цифрою 1, синю 2, а жовту 3. Тоді першим в лексикографічному порядку для N=6 a=2 b=1 c=3 ,буде намисто 112333. Вивести К-те (в вказаному порядку) намисто.
Технічні умови. Програма читає з клавіатури числа N,a,b,с,K через пропуск. Програма виводить на екран відповідь - послідовність цифр без пропусків.

Приклад
Введення 3 1 1 1 5
Виведення 312
============================

{Beads}
const
max=100;
var
a,b,c,k,kt,n,i,j:longint;
f:boolean;
m:array[1..max] of longint;
Procedure Swap(var x,y:longint);
var
temp:longint;
begin
temp:=x; x:=y; y:=temp;
end;
Procedure InitMas;
var
p:longint;
begin
for p:=1 to a do
m[p]:=1;
for p:=a+1 to a+b do
m[p]:=2;
for p:=a+b+1 to a+b+c do
m[p]:=3;
end;

Procedure PrintMas;
var
l:longint;
begin
for l:=1 to n do Write(m[l]);
WriteLn;
end;
begin
ReadLn(n,a,b,c,k);
InitMas;

f:=True;
kt:=1;
while (kt kt:=kt+1;

i:=n-1;
while (i>0)and(m[i+1]<=m[i]) do i:=i-1;
if i>0 then begin
j:=n;
while (j>i)and(m[j]<=m[i]) do j:=j-1;
Swap(m[i],m[j]);
for j:=i+1 to (n+i)div 2 do
Swap(m[j],m[n-j+i+1]);
end
else f:=False;
end;
if f
then PrintMas
else WriteLn('-1');
end.
qweqwe (qweqwe) 2020-06-14 22:12:33
ПАСИХОВ СОСЕТ

Повернутися до уроку

Повернутися до перелiку уроків курсу

В системі: гості - (1); користувачі - (0)