zoukankan      html  css  js  c++  java
  • 工作分配问题【回溯法】

    问题描述

    设有 nn 件工作分配给 nn 个人。将工作 ii 分配给第 jj 个人所需的费用为 cijcij。试设计一个算法,为每一个人都分配一件不同的工作,并使总费用达到最小。

    设计一个算法,对于给定的工作费用,计算最佳工作分配方案,使总费用达到最小。

    输入格式

    第一行有 1 个正整数 nn (1n20)(1≤n≤20)。接下来的 nn 行,每行 nn 个数,第 ii 行表示第 ii 个人各项工作费用。

    输出格式

    一行,1 个整数,即最小总费用。

    样例一

    input

    3
    4 2 5
    2 3 6
    3 4 5
    

    output

    9
    

    数据范围与约定

    时间限制: 1s1s

    内存限制: 256MB

    #include<bits/stdc++.h>
    using namespace  std;
    int t[31][31];
    int ans=0x7fffff;
    bool gz[30];
    int ls=0;
    void sz(){
        ans=min(ans,ls);
    }
    void search(int n,int k){
        if(k==n+1){
            sz();
            return ;
        }
        for(int i=1;i<=n;i++){
            if(!gz[i]){
                gz[i]=true;
                ls+=t[k][i];
                if(ls<ans){
                    search(n,k+1);
                }
                ls-=t[k][i];
                gz[i]=false;    
            }
        }
    }
    int main(){
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        cin>>t[i][j];
        search(n,1);
        cout<<ans<<endl; 
        return 0;
    }
  • 相关阅读:
    OCP-1Z0-053-200题-91题-667
    OCP-1Z0-053-200题-92题-668
    OCP-1Z0-053-200题-93题-669
    OCP-1Z0-053-200题-94题-670
    OCP-1Z0-053-200题-96题-671
    OCP-1Z0-053-200题-97题-227
    OCP-1Z0-053-200题-98题-242
    OCP-1Z0-053-200题-99题-10
    在Visual Studio 2010中配置VC++目录
    OCP-1Z0-053-200题-100题-69
  • 原文地址:https://www.cnblogs.com/luv-letters/p/8550591.html
Copyright © 2011-2022 走看看