腾讯编程马拉松:计算最佳工作位置

5星 · 超过95%的资源 需积分: 9 8 下载量 29 浏览量 更新于2024-09-12 收藏 23KB DOCX 举报
"2013腾讯编程马拉松初赛(3月20)赛题" 这是一个编程竞赛的问题,挑战者需要解决一个基于二维矩阵的游戏规则计算问题。问题的核心是计算一个N行M列的矩形布局中,每个位置的“价值”,这个价值由其相邻位置上异性员工的魅力值决定。下面是对这个问题的详细解释: 1. 问题设定:问题描述了一个刚刚加入腾讯公司的毕业生小Q,他在公司中给每位同事(男性魅力值为负整数,女性为正整数)评分,并根据邻座的性别差异来计算每个位置的得分。 2. 计算规则: - 邻居关系:每个位置的价值受到其上下左右四个邻居的影响,对于边界位置,只考虑存在的邻居。 - 得分计算:如果某个位置的邻居与其性别不同,得分加上邻居魅力值的绝对值;如果性别相同,则减去。 - 最终得分:将周围所有邻居的得分累加后得到的位置得分,得分越高,位置越好。 3. 输入格式:输入数据包括多组测试用例,每组测试用例由两整数N和M开始,表示工作室的行数和列数。接着是N行,每行M个整数,代表每个位置的员工魅力值。当N和M都为0时,表示输入结束。 4. 技术规格:N和M的最大值均为20,员工魅力值的范围在-100到100之间。 5. 输出格式:输出最佳位置的行列号及对应的得分。如果有多个位置得分最高,优先输出行号最小的位置,行号相同则比较列号,输出列号最小的那个。 6. 示例输入:给出了一个2行3列的例子,其中"Samp"可能是输入数据的不完整部分,完整的输入应该包括更多的行和列以及魅力值数据。 解决这个问题需要编写一个程序,能够处理输入的二维数组,按照上述规则计算每个位置的得分,然后找到得分最高的位置。这通常涉及迭代矩阵的所有元素,执行邻接位置的检查和得分计算,最后找出得分最高的位置。由于数据规模较小(N和M不超过20),算法的时间复杂度应控制在可接受范围内。可以使用动态规划或简单的遍历策略来实现。