Các bạn học sinh lớp 9 chuẩn bị thi hsg tin Tỉnh (thành phố) thì vào đây cùng trao đổi nha!
Mình có bài toán như sau:
In ra các hoán vị của một dãy a gồm n phần tử
vd: n=3;
123 132 213 231 312 321
Các bạn học sinh lớp 9 chuẩn bị thi hsg tin Tỉnh (thành phố) thì vào đây cùng trao đổi nha!
Mình có bài toán như sau:
In ra các hoán vị của một dãy a gồm n phần tử
vd: n=3;
123 132 213 231 312 321
Quá dễ:
Var
A,T : string;
i,j,n :integer;
Begin
Write('Viet ra day so A : '); Readln(A);
n:=length(A);
Writeln('Nhung day so hoan vi: ');
For i:=1 to n do
for j:=n to 2 do
Begin
T[1]:=A[j];
A[j-1]:=A[j];
A[j]:=T[i];
Write(A,' ');
End;
Readln;
END.
0odragonking làm sai rồi. Bài này phải dùng giải thuật quay lui chứ không đơn giản đâu!!
for i:= 1 to 10000000 do writeln('Po'' tay');
Bài này thì sao?
Cho 2 đa thức khác đa thức 0. VCT nhân 2 đa thức này.
bài này cũng đơn giản thôi bạn àh.Dùng thủ thuật đệ quy quay lui.Ta cho 1 vòng lặp chạy từ j:=1----> N,sau đó đánh dấu những phần tử đã chọn rồi lưu vào mảng chứa nghiệm sau đó gọi Try(i+1).Chúc bạn thành công.
Code:
Var
A:Array [1..100] of integer;
B:Array [1..100] of integer;
n:integer;
Procedure Xuat;
Var
j:integer;
Begin
For j:=1 to n do
Write(A[j]);
writeln;
End;
Procedure Try(i:integer);
Var
j:integer;
Begin
if i>n then xuat
Else
Begin
For j:=1 to n do
BEgin
If B[j]=0 then
Begin
B[j]:=1;
A[i]:=j;
Try(i+1);
B[j]:=0;
End;
end;
end;
end;
Begin
Readln(n);
Try(1);
Readln;
End.
Code:const fi='hoanvi.inp'; fo='hoanvi.out'; var f:text; i,n:byte; x:array[1..20] of byte; dd:array[1..20] of boolean; procedure nhap; begin assign(f,fi); reset(f); readln(f,n); close(f); end; procedure inkq; begin for i:=1 to n do write(f,x[i]); writeln(f); end; procedure try(i:byte); var j:byte; begin for j:=1 to n do if not dd[j] then begin x[i]:=j; dd[j]:=true; if i=n then inkq else try(i+1); dd[j]:=false; end; end; procedure xuli; begin nhap; fillchar(dd,sizeof(f),false); assign(f,fo); rewrite(f); try(1); close(f); end; begin nhap; xuli; end.
Được sửa bởi hang_vt lúc 21:53 ngày 07-03-2009
Bookmarks