uva 102 - Ecological Bin Packing(暴力)
2014-03-04 11:03
295 查看
题目链接:uva 102 - Ecological Bin Packing
题目大意:有三种灯B,C,G,然后有三个箱子,每个箱子中各装有三种若干个灯,给出每个箱子中各种灯的数量。每次可以从一个箱子中移动一盏灯到另外一个箱子中,问说最少移动几次可以将灯分类,即每一个箱子中只有一种灯。注意每个箱子给出灯的顺序是B,G,C,然而输出是字典序要最小。
解题思路:暴力枚举,维护最小值以及答案即可。
#include <stdio.h>
#include <string.h>
const int N = 5;
const char sign[5] = "BGC";
int ans, sum, v
, t
, c
, p
;
bool judge() {
char s1
, s2
;
for (int i = 0; i < 3; i++) {
s1[i] = sign[t[i]];
s2[i] = sign[p[i]];
}
s1[3] = s2[3] = '\0';
return strcmp(s1, s2) < 0;
}
void dfs(int d, int s) {
if (d == 3) {
if (s > ans || (s == ans && judge())) {
ans = s;
memcpy(p, t, sizeof(t));
}
return ;
}
for (t[d] = 0; t[d] < 3; t[d]++) {
int& u = t[d];
if (v[u]) continue;
v[u] = 1;
dfs(d+1, s+c[d][u]);
v[u] = 0;
}
}
bool init() {
sum = ans = 0;
memset(v, 0, sizeof(v));
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (scanf("%d", &c[i][j]) != 1) return false;
sum += c[i][j];
}
}
return true;
}
int main () {
while (init() ) {
dfs(0, 0);
for (int i = 0; i < 3; i++) printf("%c", sign[p[i]]);
printf(" %d\n", sum - ans);
}
return 0;
}
题目大意:有三种灯B,C,G,然后有三个箱子,每个箱子中各装有三种若干个灯,给出每个箱子中各种灯的数量。每次可以从一个箱子中移动一盏灯到另外一个箱子中,问说最少移动几次可以将灯分类,即每一个箱子中只有一种灯。注意每个箱子给出灯的顺序是B,G,C,然而输出是字典序要最小。
解题思路:暴力枚举,维护最小值以及答案即可。
#include <stdio.h>
#include <string.h>
const int N = 5;
const char sign[5] = "BGC";
int ans, sum, v
, t
, c
, p
;
bool judge() {
char s1
, s2
;
for (int i = 0; i < 3; i++) {
s1[i] = sign[t[i]];
s2[i] = sign[p[i]];
}
s1[3] = s2[3] = '\0';
return strcmp(s1, s2) < 0;
}
void dfs(int d, int s) {
if (d == 3) {
if (s > ans || (s == ans && judge())) {
ans = s;
memcpy(p, t, sizeof(t));
}
return ;
}
for (t[d] = 0; t[d] < 3; t[d]++) {
int& u = t[d];
if (v[u]) continue;
v[u] = 1;
dfs(d+1, s+c[d][u]);
v[u] = 0;
}
}
bool init() {
sum = ans = 0;
memset(v, 0, sizeof(v));
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (scanf("%d", &c[i][j]) != 1) return false;
sum += c[i][j];
}
}
return true;
}
int main () {
while (init() ) {
dfs(0, 0);
for (int i = 0; i < 3; i++) printf("%c", sign[p[i]]);
printf(" %d\n", sum - ans);
}
return 0;
}
相关文章推荐
- UVA 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
- UVa 102-Ecological Bin Packing
- uva 102 Ecological Bin Packing
- UVa102 - 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
- 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(规律,统计)
- UVa 102 Ecological Bin Packing (water ver.)