p-7-19工作分配问题

不羁的心 提交于 2019-12-24 16:19:11
#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;
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!