
Gửi bởi
HappySoftGroup
Code bài hệ thống xăng trên các đảo.
Mã:
Uses Crt;
Const fi = 'DAO.INP'; fo = 'DAO.OUT';
Var F : Text;
i, n, m, u, v, d, c, so : Integer;
td : Array[1..2, 1..200] Of Integer;
dau : Array[1..200] Of Boolean;
tr, hd, kq : Array[1..200] Of Byte;
Procedure DocDuLieu;
Begin
Assign(f, fi);
Reset(f);
Readln(f, n, m, u, v);
For i := 1 To n Do
Readln(f, td[1, i], td[2, i]);
Close(f);
FillChar(dau, SizeOf(dau), True);
tr[1] := 0;
so := 0;
Assign(f, fo);
Rewrite(f);
End;
Function KC(i, j : Integer): Real;
Var x, y : Real;
Begin
x := td[1, i] - td[1, j];
y := td[2, i] - td[2, j];
kc := Sqrt(Sqr(x)+Sqr(y));
End;
Procedure Viet;
Begin
While tr[c] > 0 Do
Begin
Inc(so);
kq[so] := hd[c];
c := tr[c];
End;
Inc(so);
kq[so] := u;
Writeln(f, so);
For i := so Downto 1 Do Write(f, kq[i],' ');
Close(f);
Halt;
End;
Procedure Hangdoi;
Begin
d := 1;
c := 1;
hd[1] := u;
dau[u] := False;
While d <= c Do
Begin
For i := 1 To n Do
If dau[i] And (kc(i, hd[d]) <= m) Then
Begin
Inc(c);
hd[c] := i;
dau[i] := False;
tr[c] := d;
If i = v Then Viet;
End;
Inc(d);
End;
Writeln(f, 'NO SOLUTION!');
Close(f);
End;
BEGIN
DocDuLieu;
Hangdoi;
End.
Dưới đây là đoạn code chứng minh đoạn code trên đây là hoàn toàn chính xác.
Mã:
Const fi = 'dao2.inp'; fo = 'dao2.out';
Type dao = record
x, y : Integer;
End;
mangso = Array[1..100] of Integer;
Var f, g : Text;
a : Array[1..100] of dao;
b, c : mangso;
DD : Array[1..100] of Boolean;
DDmin, dem, d, dau, dich, n, sn : Integer;
m : Real;
Good : Boolean;
{=== Mo file ===}
Procedure Openf;
Begin
Assign(f, fi); Reset(f);
Assign(g, fo); Rewrite(g);
End;
{=== Dong file ===}
Procedure Closef;
Begin
Close(f); Close(g);
End;
{=== Input ===}
Procedure Input;
Var k : Integer;
Begin
Readln(f, n, m, dau, dich);
For k := 1 to n do Readln(f, a[k].x, a[k].y);
FillChar(b, SizeOf(b), 0);
FillChar(c, SizeOf(c), 0);
FillChar(DD, SizeOf(DD), False);
DDMin := Maxint;
End;
{=== Print ===}
Procedure Print(x : mangso; sl : Integer);
Var k : Integer;
Begin
Inc(sn);
For k := 1 to (sl - 1) do Write(g, x[k], ' ---> ');
Writeln(g, x[sl]);
End;
{=== Tinh Khoang Cach ===}
Function KC(i, j : Integer) : Real;
Begin
KC := sqrt(sqr(abs(a[i].x-a[j].x))+sqr(abs(a[i].y-a[j].y)));
End;
{=== Vet ===}
Procedure Try(i : Integer);
Var j, k : Integer;
Begin
If d = dich then
Begin
Print(b, dem);
If (sn = 1) Or (dem < DDMin) then
Begin
DDMin := dem;
FillChar(c, SizeOf(c), 0);
For k := 1 to dem do c[k] := b[k];
End;
End;
For j := 1 to n do
Begin
If (j <> i) And (Not DD[j]) then
Begin
Good := True;
For k := 1 to dem do
If (a[j].x = a[k].x) And (a[j].y = a[k].y) then Good := False;
If Good And (KC(i, j) <= m) then
Begin
Inc(dem);
b[dem] := j;
DD[j] := True;
d := j;
Try(d);
b[dem] := 0;
Dec(dem);
DD[j] := False;
End;
End;
End;
End;
{=== Xu li ===}
Procedure Process;
Begin
sn := 0;
dem := 1;
b[1] := dau;
Try(dau);
If DDMin > 0 then
Begin
Writeln(g, 'Tong so duong di : ',sn);
Writeln(g, 'Duong di toi uu : ');
Print(c, DDMin);
End
Else
Writeln(g, 'Khong cos duong di toi uu tu ',dau,' den ',dich);
Closef;
End;
{=== MAIN ===}
BEGIN
Openf;
Input;
Process;
END.
Chúc các bạn học tốt!
Xe nâng người Boom lift được Công Ty TNHH Trung thành phân phối chính hãng tại khu vực phía Bắc. Với chi phí đầu tư ban đầu thấp hơn rất nhiều so với các loại xe nâng dầu , xe nâng động cơ loại...
Xe nâng người được trung thành nhập khẩu giá tốt