蓝桥杯:组队 暴力解法

蓝桥杯:组队 暴力解法

【问题描述】

作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,组成球队的首发阵容。
每位球员担任 1 号位至 5 号位时的评分如下表所示。请你计算首发阵容 1号位至 5 号位的评分之和最大可能是多少?

试题 A: 组队 2第十届蓝桥杯大赛软件类省赛 C/C++ 大学 B 组
编号 1 号位 2 号位 3 号位 4 号位 5 号位
在这里插入图片描述

97 90 0 0 0
92 85 96 0 0
0 0 0 0 93
0 0 0 80 86
89 83 97 0 0
82 86 0 0 0
0 0 0 87 90
0 97 96 0 0
0 0 89 0 0
95 99 0 0 0
0 0 96 97 0
0 0 0 93 98
94 91 0 0 0
0 83 87 0 0
0 0 98 97 98
0 0 0 93 86
98 83 99 98 81
93 87 92 96 98
0 0 0 89 92
0 99 96 95 81

(如果你把以上文字复制到文本文件中,请务必检查复制的内容是否与文档中的一致。在试题目录下有一个文件 team.txt,内容与上面表格中的相同,请注意第一列是编号)

【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

答案

490

思路

好像数据量不大,205 也就 3200000‬,直接暴力解之

代码

#include <iostream>

using namespace std;

int visited[21];
int pp[21][6];

int mmax = 0;

void dfs(int p, int sum)
{
	if(p > 5)
	{
		if(sum > mmax)
		{
			mmax = sum;
		}
	}
	else
	{
		for(int i=1; i<=20; i++)
		{
			if(visited[i] == 0)
			{
				visited[i] = 1;
				dfs(p+1, sum+pp[i][p]);
				visited[i] = 0;
			}
		}
	}
}

int main()
{
	for(int i=1; i<=20; i++)
	{
		visited[i] = 0;
		for(int j=1; j<=5; j++)
		{
			cin>>pp[i][j];
		}
	}
	
	dfs(1, 0);
	
	cout<<mmax<<endl;

	return 0;
}
发布了49 篇原创文章 · 获赞 1 · 访问量 708

猜你喜欢

转载自blog.csdn.net/weixin_44176696/article/details/104080263
今日推荐