p-7-19工作分配问题

#include <bits/stdc++.h>

using namespace std;

int minn = 99999,a[22][22];
int vis[22];
int n;

void traceback(int x,int s)   //x代表第几份工作
{
    if(x > n)
    {
        minn = min(minn,s);
        return ;
    }
    for(int i = 1; i <= n; i++)
    {
        if(!vis[i])
        {
            vis[i] = 1;
            if(s + a[x][i] < minn)
            {
                traceback(x+1,s+a[x][i]);
            }
            vis[i] = 0;
        }
    }

}

int main()
{
    cin>>n;
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= n; j++)
            cin>>a[i][j];
    }
    
    traceback(1,0);
    cout<<minn<<endl;
    return 0;
}

发布了298 篇原创文章 · 获赞 153 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43192537/article/details/103681084