thieumao

Bài 10 - Phân Việc

Sep 14th, 2013
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.14 KB | None | 0 0
  1. {
  2. Nguoi\viec      1       2       3
  3.  
  4. 1               5       7       5
  5. 2               6       2       9
  6. 3               8       5       9
  7. --> Hieu suat max la 7 9 8
  8. }
  9.  
  10. uses crt;
  11. Var
  12.   a,x,xmax:array[1..7] of integer;
  13.   v: array[1..7,1..7] of integer;
  14.   i,j,n,HSX,HSMAX:integer;
  15.  
  16. procedure bandau;
  17. var i,j,k: integer;
  18. begin
  19.  clrscr;
  20.  textcolor(white);
  21.  write('   ');
  22.  for k:=1 to n do write('V',k,' ');
  23.  for i:=1 to n do
  24.   begin
  25.    writeln;
  26.    write('N',i);
  27.    for j:=1 to n do write(v[i,j]:3);
  28.   end;
  29. end;
  30.  
  31. procedure velai;
  32. var i,j,k: integer;
  33. begin
  34.  delay(3000);
  35.  clrscr;
  36.  textcolor(white);
  37.  write('   ');
  38.  for k:=1 to n do write('V',k,' ');
  39.  for i:=1 to n do
  40.   begin
  41.    writeln;
  42.    write('N',i);
  43.    for j:=1 to n do
  44.     if xmax[i] <> j then
  45.      begin
  46.       write(v[i,j]:3);
  47.      end
  48.     else
  49.      begin
  50.        textcolor(yellow);
  51.        write(v[i,j]:3);
  52.        textcolor(white);
  53.      end;
  54.   end;
  55.  writeln;
  56.  writeln;
  57.  writeln('HSX= ', HSX);
  58. end;
  59.  
  60. procedure xong;
  61. var i,j,k: integer;
  62. begin
  63.  clrscr;
  64.  textcolor(white);
  65.  write('   ');
  66.  for k:=1 to n do write('V',k,' ');
  67.  for i:=1 to n do
  68.   begin
  69.    writeln;
  70.    write('N',i);
  71.    for j:=1 to n do
  72.     if xmax[i] <> j then
  73.      begin
  74.       write(v[i,j]:3);
  75.      end
  76.     else
  77.      begin
  78.        textcolor(red);
  79.        write(v[i,j]:3);
  80.        textcolor(white);
  81.      end;
  82.   end;
  83.  writeln;
  84.  writeln;
  85.  writeln('HSMAX= ', HSMAX);
  86. end;
  87.  
  88. procedure print;
  89. var j,k:integer;
  90. begin
  91.  //velai; {Ve lai tat ca truong hop}
  92.  HSX:=0;
  93.  for j:=1 to n do HSX:=HSX+v[j,x[j]];
  94.  if HSX>HSMAX then
  95.   begin
  96.    HSMAX:=HSX;
  97.    for k:=1 to n do xmax[k]:=x[k];
  98.    velai; {Chi ve lai truong hop HSX lon hon}
  99.   end;
  100. end;
  101.  
  102. procedure try(i:integer);
  103. var j:integer;
  104.  begin
  105.   if i>n then print else
  106.   for j:=1 to n do
  107.    if (a[j]=0) then
  108.     begin
  109.      x[i]:=j;
  110.      a[j]:=1;
  111.      try(i+1);
  112.      a[j]:=0;
  113.     end;
  114.   end;
  115.  
  116. begin
  117.  clrscr;
  118.  HSMAX:=0;
  119.  repeat
  120.   write('n= ');
  121.   readln(n);
  122.  until (n>0) and (n<8);
  123.  for i:=1 to n do
  124.  for j:=1 to n do
  125.   begin
  126.    write('v[',i,',',j,']= ');
  127.    readln(v[i,j]);
  128.   end;
  129.  bandau;
  130.  try(1);
  131.  xong;
  132.  readln;
  133. end.
Advertisement
Add Comment
Please, Sign In to add comment