C++打工小队问题_c++
C++打工小队问题_开发语言_02
C++打工小队问题_后端_03
C++打工小队问题_后端_04
C++打工小队问题_ios_05
C++打工小队问题_i++_06

//Author:PanDaoxi
#include <iostream>
using namespace std;
//a=收益
//book=第i个人是否分配了工作
//maxl=最高收入
//n=工作数目 
int a[31][31],book[31],maxl=0,n;
void dfs(int step,int t){ //step=第几份工作 t=收益
	if(step>n){ //分配完毕 
		if(t>maxl) maxl=t; 
		return 0; 
	}
	for(int i=1;i<=n;i++){
		//判断第i个人是否被分配
		if(book[i]==0){
			book[i]=1;
			t+=a[step][i];
			dfs(step+1,t);
			//回溯
			t-=a[step][i];
			book[i]=0; 
		} 
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];	
		}
	}
	dfs(1,0);
	cout<<maxl<<endl;
	return 0;
} 

C++打工小队问题_后端_07