提交时间:2023-12-23 17:50:48

运行 ID: 34637

#include<bits/stdc++.h> using namespace std; int xiaolv[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}}; bool c[25];//存储同种工作是否被占 int a[25];//存储每人的工作种类 int b[25];//存储打擂台后的最大效益的每人的工作种类 int n=5,maxv;//maxv存储最大效益的值 void print()//输出 { printf("A:J%d\n",b[1]); printf("B:J%d\n",b[2]); printf("C:J%d\n",b[3]); printf("D:J%d\n",b[4]); printf("E:J%d\n",b[5]); printf("supply:%d",maxv); } void fun(int k,int v) { for(int i=1;i<=n;i++) { if(c[i]==false) { a[k]=i;//给a数组工作种类 c[i]=true;//标记 v+=xiaolv[k][i]; if(v>maxv)//打擂台,将大的最佳效益值赋值给maxv { maxv=v; for(int i=1;i<=n;i++) { b[i]=a[i];//将大的最佳效益值的工作种类赋值给b数组 } } fun(k+1,v);//再进行深搜 c[i]=false;//取消标记 v-=xiaolv[k][i];//取消工作效率 } } } int main() { fun(1,0); print(); return 0; }