Отримання знань
дистанційна підтримка освіти школярів
Тут ви можете виконати завдання чи задати питання по зм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 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 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
ПАСИХОВ СОСЕТ |
В системі:
гості - (1); користувачі -
(0)