помогите кто нить!!!!
и т.д.
Есть n число перестановок, нужно показать все перестановки в которых 1 не была бы на своем месте
и т.д.
Что-то не совсем ясно, что дано и что надо...
Может примерчик кинешь при каком-нить конкретном n?
Что-то не совсем ясно, что дано и что надо...
Может примерчик кинешь при каком-нить конкретном n?
т.е. n=10, это значит что есть 1,2,3,4,5,6,7,8,9,10
нужно вывести все перестановки этих чисел так, что бы например так 2,1,8,10,9,4,5,7,3,9
10,7,1,3,9,8,5,2,4,6
и т.д.
т.е. n=10, это значит что есть 1,2,3,4,5,6,7,8,9,10
нужно вывести все перестановки этих чисел так, что бы например так 2,1,8,10,9,4,5,7,3,9
10,7,1,3,9,8,5,2,4,6
и т.д.
Тогда держи:
program Force;
type
PItem = ^TItem;
TItem = record
Item: Integer;
Prev, Next: PItem;
end;
var
Head, HPrev, H, H1: PItem;
n, Count: Integer;
f: Text;
procedure Valid(H: PItem);
begin
H1 := Head;
while H1 <> H do
if H1^.Item = H^.Item then begin
Inc(H^.Item);
H1 := Head;
end else
H1 := H1^.Next;
end;
begin
repeat
Write('Введите n:');
ReadLn(n);
until n > 1;
Assign(f, 'force.out');
Rewrite(f);
New(Head);
H := Head;
with H^ do begin
Item := 2;
Prev := nil;
Next := nil;
end;
Count := 1;
repeat
if Count < n then begin
HPrev := H;
New(H^.Next);
H := H^.Next;
with H^ do begin
Item := 1;
Valid(H);
Prev := HPrev;
Next := nil;
end;
Inc(Count);
end else begin
H1 := Head;
while H1 <> nil do begin
if H1 <> Head then
Write(f, ',');
Write(f, H1^.Item);
H1 := H1^.Next;
end;
WriteLn(f);
Inc(H^.Item);
Valid(H);
if H^.Item > n then
while (H <> nil) and (H^.Item > n) do begin
H := H^.Prev;
if H <> nil then begin
Dispose(H^.Next);
H^.Next := nil;
Inc(H^.Item);
Valid(H);
end;
Dec(Count);
end;
end;
until (H = nil);
Close(f);
end.
Только слишком большие числа не суй - считать будет долго и файлик выходной получится нехилый.
Но вот он спрашивает введите n
а потом что то тишина!!!!
Может что не так делаю!!??
Я конечно в паскале не особо!!!
Но вот он спрашивает введите n
а потом что то тишина!!!!
Может что не так делаю!!??
А что ты в качестве n вводишь?
Если большое число, то и считать прога будет долго - сам посуди, сколько перестановок у n=10.
Попробуй для начала небольшие числа, вроде 4,5,6.
В итоге должен получиться выходной файл force.out
Спасибо огромное!!!!!