1 条题解
-
0
C++ :
#include<cstdio> #include<iostream> #include<cstdlib> #include<iomanip> #include<cstring> 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 p[6]={0}; int go(int step,int t) // step是第几个人,t是之前已得的效益 { for (int i=1;i<=5;i=i+1) if (!p[i]) //判断第i项工作没人选择 { f[step]=i; //第step个人,就选第i项工作 p[i]=1; //标记第i项工作被人安排了 t+=data[step][i]; //计算效益值 if (step<5) go(step+1,t); else if (t>max1) //保存最佳效益值 { max1=t; for (int j=1;j<=5;j++) g[j]=f[j]; //保存最优效益下的工作选择方案 } t-=data[step][i]; //回溯 p[i]=0; } return 0; } int main() { go(1,0); //从第1个人,总效益为0开始 for (int i=1;i<=5;i=i+1) cout<<char(64+i)<<":J"<<g[i]<<endl; //输出各项工作安排情况 //cout<<endl; cout<<"supply:"<<max1<<endl; //输出最佳效益值 return 0; }
- 1
信息
- ID
- 393
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者