1 solutions

  • 0
    @ 2025-11-5 15:21:12

    Pascal :

    var
      n, i, j, min : longint;
      a : array[1..17,1..17] of longint;
      b : array[1..17] of boolean;
    
    procedure dfs(x, sum : longint);
    var i : longint;
    begin
      if sum >= min then exit;
      if x > n then
      begin
        if sum < min then min := sum;
        exit;
      end;
      for i := 1 to n do
        if b[i] then
        begin
          b[i] := false;
          dfs(x+1, sum+a[x,i]);
          b[i] := true;
        end;
    end;
    
    begin
      readln(n);
      for i := 1 to n do
      begin
        for j := 1 to n do
        begin
          read(a[i,j]);
          a[i,j] := 1000 - a[i,j];
        end;
        readln;
      end;
      min := maxlongint;
      fillchar(b, sizeof(b), true);
      dfs(1, 0);
      writeln(n*1000-min);
    end.
    
    • 1

    Information

    ID
    16688
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By