UVa系列——102/Ecological Bin Packing
2012-04-01 22:53
302 查看
引用请注明出处:/article/8833308.html
简单的枚举题,没什么好说的,注意一点就是题目给的颜色顺序是BGC,而如果按照字典序最小优先的话访问要按BCG访问,所以用了三个SWAP。额外说明一点,这里为了使代码紧凑,用了很多宏,而且出现了do{……}while(0)这样的结构,这样定义的优点是很明显的,可以定义一个宏实现多条语句而不至于冲突,说白了可以把宏看做函数来用,当然,宏的优点是直接展开减少了函数调用花费的时间和栈的耗费。#include <stdio.h> #include <stdlib.h> #define PRINT(color) putchar(color==0?'B':(color==1?'C':'G')) #define PRINT_COLOR(x, y, z) do{ PRINT(x);PRINT(y);PRINT(z);}while(0) #define SUM_BINS(i, j) (bins[i] + bins[j+3] + bins[9-i-j]) #define SWAP(i, j) do{int tmp=bins[i]; bins[i]=bins[j]; bins[j]=tmp;}while(0) int main(int argc, char *argv[]) { int bins[9]; while(scanf("%d",&bins[0]) != EOF){ int i, pi,j, pj, sum = bins[0], mmax = -1; for(i = 1; i != 9; ++i){ scanf("%d", &bins[i]); sum += bins[i]; } SWAP(1, 2);SWAP(4, 5);SWAP(7, 8); for(i = 0; i != 3; ++i) for(j = 0; j != 3; ++j){ if(i == j)continue; if(mmax < SUM_BINS(i, j)){ mmax =SUM_BINS(i, j); pi = i; pj = j; } } PRINT_COLOR(pi,pj,3-pi-pj); printf(" %d\n",sum - mmax); } return 0; }
相关文章推荐
- UVa 102 Ecological Bin Packing
- UVA 102 - Ecological Bin Packing
- UVa Problem 102 - Ecological Bin Packing
- uva 102 Ecological Bin Packing
- UVA_102_Ecological Bin Packing
- uva_102 - Ecological Bin Packing
- uva102 Ecological Bin Packing
- UVa 102 Ecological Bin Packing (water ver.)
- UVA之102 - Ecological Bin Packing
- uva 102 - Ecological Bin Packing(暴力)
- UVa 102|Ecological Bin Packing|暴力
- UVa102 - Ecological Bin Packing
- UVa 102 - Ecological Bin Packing(规律,统计)
- UVa 102- Ecological Bin Packing
- UVa OJ 102-Ecological Bin Packing
- uva 102 Ecological Bin Packing
- UVa 102-Ecological Bin Packing
- UVA 102 - Ecological Bin Packing(动态规划)
- UVa - 102 - Ecological Bin Packing
- UVa102 Ecological Bin Packing(翻译+题解)