Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Решение. Program perestanowki;






Program perestanowki;

uses WinCrt;

const

mm = 100;

var

m, i, j, k, n: integer;

a, p: array [1..mm] of integer;

begin

write('Введите число эл. для перестановки '); readln(m);

writeln('Введите элементы массива a[1..m]');

for i: = 1 to m do

begin

write('Введите ', i, '-й элемент '); readln(a[i]);

p[i]: = i

end;

for i: = 1 to m do write(a[i], ' '); writeln;

for i: = m - 1 downto 1 do

if p[i] < p[i+1] then

begin

n: = p[i];

for j: = m downto i do

if n < p[j] then

begin

p[i]: = p[j]; p[j]: = n;

k: = 1;

while i + k < m - k + 1 do

begin

n: = p[i+k];

p[i+k]: = p[m+1-k];

p[m+1-k]: = n;

k: = k + 1

end;

j: = i

end;

for i: = 1 to m do write(a[p[i]]: 4);

writeln

end

end.

Задача 26. На доске расставить n ладьи неугрожающих друг другу.

Решение

Program Problem26;

uses WinCrt;

const

n = 8;

label 1;

type

u = array [1..n] of longint;

f = array [1..n] of u;

var

p: u;

a: f;

i, z, v, y, l, j: longint;

{----------------------------------------------------------------------------------------}

Procedure output_p(p: u; y, n: longint);

var

i, j: longint;

begin

writeln(y, '-й способ расстановки ладьей');

for i: = 1 to n do

begin

a[i][p[i]]: = p[i];

for j: = 1 to n do

begin

if a[i][j] < > p[i] then a[i][j]: = 0; write(a[i][j]: 4)

end;

writeln

end

end;

{----------------------------------------------------------------------------------------}

begin

for i: = 1 to n do p[i]: = n + 1 - i;

z: = 1;

for i: = 1 to n do z: = z*i;

y: = 1;

output_p(p, y, n);

for y: = 2 to z do

begin

i: = 2; j: = 1;

while p[i - 1] < = p[i] do i: = i + 1;

while p[j] < = p[i] do j: = j + 1;

v: = p[i]; p[i]: = p[j]; p[j]: = v;

if i = 2 then goto 1;

for l: = 1 to (i - 1) div 2 do

begin

v: = p[l]; p[l]: = p[i - l]; p[i - l]: = v

end;

1: output_p(p, y, n)

end

end.

Задача 27. Процедура определения наибольшей стоимости груза m при заданном его весе z.

Решение

Procedure gen_comb(n, k: integer; z: real; var m: real);

var

i, j, q, b: integer;

begin

for j: = 1 to k do

begin

max[j]: = n - j + 1; min[j]: = k - j + 1; x[j]: = min[j]

end;

i: = 0; q: = 0; b: = 0;

while i< =k do

begin

q: = q + 1; s[q]: = 0;

for j: = k downto 1 do s[q]: = s[q] + p[x[j]];

if s[q] = z then

begin

b: = b + 1; s1[b]: = 0;

for j: = k downto 1 do

begin

s1[b]: = s1[b] + c[x[j]];

if m < s1[b] then m: = s1[b]

end

end;

i: = 1;

while (i < = k) and (x[i] = max[i]) do i: = i + 1;

if i < = k then x[i]: = x[i] + 1;

for j: = i - 1 downto 1 do

begin

min[j]: = x[j + 1] + 1; x[j]: = min[j]

end

end

end;


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.011 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал