2 条题解

  • 0
    @ 2025-10-8 16:48:22
    #include<bits/stdc++.h>
    using namespace std;
    int n, a[20][20], v[20], ans;
    void dfs(int x, int k, int s)
    {
        if(s>ans) return ;
        if(k==n)
        {
            if(s+a[x][1]<ans) ans=s+a[x][1];
            return ;
        }
        for(int i=2;i<=n;i++)
            if(!v[i])
            {
                v[i]=1;
                if(s+a[x][i]<ans)dfs(i,k+1,s+a[x][i]);
                v[i]=0;
            }   
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]);
        memset(v,0,sizeof(v));
        v[1]=1;
        ans=9999999999;
        dfs(1,1,0);
        printf("%d\n",ans);
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:48:14
      #include<bits/stdc++.h>
      using namespace std;
      int n,a[20][20],v[20],ans;
      void dfs(int x,int k,int s)
      {
          if(s>ans) return ;
          if(k==n)
          {
              if(s+a[x][1]<ans) ans=s+a[x][1];
              return ;
          }
          for(int i=2;i<=n;i++)
              if(!v[i])
              {
                  v[i]=1;
                  if(s+a[x][i]<ans)dfs(i,k+1,s+a[x][i]);
                  v[i]=0;
              }   
      }
      int main()
      {
          scanf("%d",&n);
          for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]);
          memset(v,0,sizeof(v));
          v[1]=1;
          ans=9999999999;
          dfs(1,1,0);
          printf("%d\n",ans);
          return 0;
      }
      • 1

      信息

      ID
      82
      时间
      3000ms
      内存
      128MiB
      难度
      6
      标签
      递交数
      180
      已通过
      59
      上传者