题目:
某游戏中,不同的兵种处于不同的地形上时,其攻击能力也一样,现有n个不同兵种的角色(1;2;; n),需安排在某战区n个点上,角色i在j点上的攻击力为Aij,试设计一个布阵方案,使总的攻击力最大。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=100+10;
int n,ans=0;
int map[maxn][maxn];
bool vis[maxn];
int pos[maxn],ans_pos[maxn];
void dfs(int cnt,int u)
{
    if (cnt == n)
    {       
	    if (u > ans)
		{
	    	ans=u;
	    	memcpy(ans_pos,pos,sizeof(pos));
		}
	        return;
    }
    for (int i = 0; i<n; i++)
    {
    	if(!vis[i])
		{
    		vis[i]=1;
			pos[cnt]=i+1;
			dfs(cnt+1,u+map[cnt][i]);
			vis[i]=0;	
		}
	}
        
}
int main()
{
	while(scanf("%d",&n)!=EOF&&n)
	{
	 	ans=0;
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<n;j++)
			{
				scanf("%d",&map[i][j]);
			}
				
		}
			
		memset(vis,0,sizeof(vis));
		dfs(0,0);
		printf("Max ATC:%d\n",ans);
		printf(" Posion: ");
		for(int i=0;i<n;i++)
		{
			printf("%d",ans_pos[i]);
		}
			
		printf("\n");  
    }
    return 0;
}
结果:

原文:https://www.cnblogs.com/T815/p/14162222.html