More actions
imported>Unknown No edit summary |
(Repair batch-0002 pages from live compare) |
||
| Line 10: | Line 10: | ||
void output(int colorResult, int min); | void output(int colorResult, int min); | ||
int bottle | int bottle[9] = {0,}; | ||
string color | string color[6] = {"BCG", "BGC", "GBC", "GCB", "CBG", "CGB"}; | ||
int colorIndex | int colorIndex[6][3] = {{0,5,7}, {0,4,8}, {1,3,8}, {1,5,6}, {2,3,7}, {2,4,6}}; | ||
int main() | int main() | ||
| Line 27: | Line 27: | ||
for(int i = 0; i < 9; i++) | for(int i = 0; i < 9; i++) | ||
{ | { | ||
cin >> bottle | cin >> bottle[i]; | ||
sum += bottle | sum += bottle[i]; | ||
if (sum > pow(2, 30)) | if (sum > pow(2, 30)) | ||
{ | { | ||
| Line 50: | Line 50: | ||
{ | { | ||
for(int i = 0; i < 9; i++) | for(int i = 0; i < 9; i++) | ||
if (i == colorIndex | if (i == colorIndex[allColorSet][index] || i == colorIndex[allColorSet][index+1] | ||
|| i == colorIndex | || i == colorIndex[allColorSet][index+2]) | ||
continue; | continue; | ||
else | else | ||
sum += bottle | sum += bottle[i]; | ||
if (allColorSet == 0) | if (allColorSet == 0) | ||
minValue = sum; | minValue = sum; | ||
| Line 77: | Line 77: | ||
void output(int colorResult, int min) | void output(int colorResult, int min) | ||
{ | { | ||
cout << color | cout << color[colorResult] << " " << min << endl; | ||
} | } | ||
---- | ---- | ||
EcologicalBinPacking | EcologicalBinPacking | ||
Latest revision as of 00:16, 27 March 2026
EcologicalBinPacking
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
void input();
void findMinCount();
bool isMinValue(int aSum, int aMinValue);
void output(int colorResult, int min);
int bottle[9] = {0,};
string color[6] = {"BCG", "BGC", "GBC", "GCB", "CBG", "CGB"};
int colorIndex[6][3] = {{0,5,7}, {0,4,8}, {1,3,8}, {1,5,6}, {2,3,7}, {2,4,6}};
int main()
{
input();
findMinCount();
return 0;
}
void input()
{
int sum = 0;
for(int i = 0; i < 9; i++)
{
cin >> bottle[i];
sum += bottle[i];
if (sum > pow(2, 30))
{
cout << "병의 수 초과" << endl;
cout << "다시 입력" << endl;
sum = 0;
i = -1;
continue;
}
}
}
void findMinCount()
{
int sum = 0;
int minValue = 0;
int index = 0;
int colorResult = 0;
int allColorSet = 0;
while(allColorSet < 6)
{
for(int i = 0; i < 9; i++)
if (i == colorIndex[allColorSet][index] || i == colorIndex[allColorSet][index+1]
|| i == colorIndex[allColorSet][index+2])
continue;
else
sum += bottle[i];
if (allColorSet == 0)
minValue = sum;
if (isMinValue(sum, minValue))
{
minValue = sum;
colorResult = allColorSet;
}
allColorSet++;
sum = 0;
}
output(colorResult, minValue);
}
bool isMinValue(int aSum, int aMinValue)
{
return (aSum < aMinValue) ? true : false;
}
void output(int colorResult, int min)
{
cout << color[colorResult] << " " << min << endl;
}
EcologicalBinPacking