uva 317 - Hexagon(规律推导)
来源:互联网 发布:福建师范网络教育平台 编辑:程序博客网 时间:2024/06/10 11:25
题目连接:317 - Hexagon
题目大意:在一个19个六边形组成的图形上玩一个游戏,给出9个数字, 分成3组, 分别可以填在左上角, 上, 有上角,因为对于小六边形来说, 对边的数是相同的, 然后这样9个数可以组成27个不同的小六边形, 现在要将在这27个小的六边形中选取19个填入图形中, 尽量使得的分最高,并且不可以重复使用小六边形。 得分的计算是对应图形的某一方向上, 如果这个方向的所有小六边形的边的数值相同, 得分就等于 边的数值 * 该方向的个数。
解题思路:因为总共有27个六边形, 而且各个之间不相同。 然后对应图形可以分成15 个得分方向, 每5 个方向可以分成一组, 对应上面的3组数字, 对应方向得分为 3 4 5 4 3, 要将三个数值填在这5 个位置, 使得得分尽量高。
对应三个数字 a, b , c, 根据六边形的个数, 以及三个面的关系, 8 7 5 的方式是得分最高的。
#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;#define N 5int n, Max, num[N][N];const int yes[N] = {5, 6, 8};const int no[N] = {5, 7, 7}; int main(){ scanf("%d", &n); for (int t = 1; t <= n; t++){// Init.memset(num, 0, sizeof(num));Max = 0;// Read.for (int i = 1; i <= 3; i++){ for (int j = 0; j < 3; j++)scanf("%d", &num[i][j]); sort(num[i], num[i] + 3);}// Handle.for (int k = 0; k <= 3; k++){ int sum = 0; for (int i = 1; i <= 3; i++){if (i == k){ for (int j = 0; j < 3; j++)sum += num[i][j] * yes[j];}else{ for (int j = 0; j < 3; j++)sum += num[i][j] * no[j];} } if (sum > Max)Max = sum;}printf("Test #%d\n%d\n\n", t, Max); } return 0;}
- uva 317 - Hexagon(规律推导)
- uva 317 Hexagon
- UVA 317 Hexagon
- UVa 317 - Hexagon
- HDU2524(规律推导)
- codeforces 560C Gerald's Hexagon(找规律)
- uva 317(规律)
- UVA - 11308(规律)
- HDU 5826 physics (数学推导)(规律)
- light oj 1202 - Bishops(规律推导)
- codeforces Gerald's Hexagon 找规律
- 数列规律 推导方法
- uva 10359 - Tiling(规律)
- UVA Number Sequence(规律)
- Hexagon
- sgu 126 Boxes 数学推导(打表找规律??...)
- HDU 4586 Play the Dice(规律+推导)
- HDU:2050 折线分割平面(规律,数学,推导)
- 你不了解的awk
- TreeMap源码分析——基础分析(基于JDK1.6)
- Linux shell 变量 数学 运算
- 理发师悖论
- SHELL字符串处理技巧(${}、##、%%)
- uva 317 - Hexagon(规律推导)
- NetScheduleJobAdd函数添加任务计划的方法
- 金山快盘 文件冲突 解决方法
- mongo safe=fase隐含若干问题
- shell脚本的并行处理方法——multi.sh介绍
- 去除UISearchBar圆角背景
- 编程之美3.8求二叉树中节点的最大距离
- 用过的shell命令——持续更新
- [C++ Primer] 语句