最大效益
设有A,B,C,D,E五人从事J1,J2,J3,J4,J5五项工作,每人只能从事一项,他们的效益如下。
每人选择五项工作中的一项,在各种选择的组合中,找到效益最高的的一种组合输出。
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cmath> using namespace std; int data[6][6]={{0,0,0,0,0,0},{0,13,11,10,4,7},{0,13,10,10,8,5},{0,5,9,7,7,4},{0,15,12,10,11,5},{0,10,11,8,8,4}}; int max1=0,g[10],f[10]; bool pd[10]; void dfs(int q,int p) { for(int i=1;i<=5;i++) { if(pd[i]==0) { f[q]=i; pd[i]=1; p+=data[q][i]; if(q<5)dfs(q+1,p); else if(p>max1) { max1=p; for(int i=1;i<=5;i++) g[i]=f[i]; } p-=data[q][i]; pd[i]=0; } } } int main() { dfs(1,0); for (int i=1;i<=5;i++) cout<<char(64+i)<<":J"<<g[i]<<" "; cout<<endl; cout<<"supply:"<<max1<<endl; }