首页 > 编程语言 > 详细

排兵布阵算法

时间:2020-12-20 10:45:48      阅读:35      评论:0      收藏:0      [点我收藏+]

 题目:

某游戏中,不同的兵种处于不同的地形上时,其攻击能力也一样,现有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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!