Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
34636 | byxx2023 | 【搜索与回溯】分工问题(例题) | C++ | 无测评数据 | 0 MS | 0 KB | 833 | 2023-12-23 17:50:20 |
#include<bits/stdc++.h> using namespace std; int maxv=INT_MIN,v; bool flag[6]; int a[10][10]{ {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 b[7],c[7]; void fun(int k) { for(int i=1;i<=5;i++)//k为哪个人,i为这人做第几种工作 { if(flag[i]==0) { flag[i]=1; b[k]=i; v+=a[k][i]; if(k==5) { if(v>maxv)//打擂台 { maxv=v; for(int j=1;j<=5;j++) { c[j]=b[j]; } } } else { fun(k+1); } v-=a[k][i]; flag[i]=0; } } } int main() { fun(1); printf("A:J%d\n",c[1]); printf("B:J%d\n",c[2]); printf("C:J%d\n",c[3]); printf("D:J%d\n",c[4]); printf("E:J%d\n",c[5]); printf("supply:%d",maxv); }