LQ0089 组队矩阵计算
Posted 海岛Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0089 组队矩阵计算相关的知识,希望对你有一定的参考价值。
题目来源:蓝桥杯2019初赛 C++ B组D题
题目描述
作为篮球队教练,你需要从以下名单中选出1 号位至5 号位各一名球员,组成球队的首发阵容。
每位球员担任1号位至5号位时的评分如下表所示。请你计算首发阵容1号位至5号位的评分之和最大可能是多少?
该表格可以参考team.txt
问题分析
求最大值问题。
先算出每个球员的最佳位置,再算组队最大值。
这个题的关键在于怎么用数据结构来存储算出来值,为进一步计算所用。
这个程序对于特殊的数据,也许会出错?
AC的C语言程序如下:
/* LQ0089 组队 */
#include <stdio.h>
#include <string.h>
#define N 20
#define M 5
int a[][M] =
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
;
int p[N][2], maxp[M];
int main()
/* 找出每个人的最佳位置 */
for (int i = 0; i < N; i++)
int maxa = 0;
for (int j = 0; j < M; j++)
if (a[i][j] > maxa)
maxa = a[i][j], p[i][0] = maxa, p[i][1] = j;
memset(maxp, 0, sizeof maxp);
for (int i = 0; i < N; i++)
if (p[i][0] > maxp[p[i][1]])
maxp[p[i][1]] = p[i][0];
int sum = 0;
for (int i = 0; i < M; i++)
sum += maxp[i];
printf("%d\\n", sum);
return 0;
以上是关于LQ0089 组队矩阵计算的主要内容,如果未能解决你的问题,请参考以下文章