Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

EcologicalBinPacking/곽세환: Difference between revisions

From ZeroWiki
imported>Unknown
No edit summary
 
(Repair batch-0002 pages from live compare)
 
Line 13: Line 13:
  while (true)
  while (true)
  {
  {
  int bottle[3][3]; // 병
  int bottle[3][3]; // 병
  int bin[3]; // 통
  int bin[3]; // 통
  int min_move = 0; // 최소 이동수 = 전체 병 수 - 이동하지 않는 병 수
  int min_move = 0; // 최소 이동수 = 전체 병 수 - 이동하지 않는 병 수
  int total_bottle = 0;
  int total_bottle = 0;
Line 23: Line 23:
  for (j = 0; j < 3; j++)
  for (j = 0; j < 3; j++)
  {
  {
  if (!(cin >> bottle[i][j]))
  if (!(cin >> bottle[i][j]))
  return 0;
  return 0;
  total_bottle += bottle[i][j];
  total_bottle += bottle[i][j];
  }
  }
   
   
  bin[0] = BROWN;
  bin[0] = BROWN;
  bin[1] = CLEAR;
  bin[1] = CLEAR;
  bin[2] = GREEN;
  bin[2] = GREEN;
  not_move_bottle = bottle[0][BROWN] + bottle[1][CLEAR] + bottle[2][GREEN];
  not_move_bottle = bottle[0][BROWN] + bottle[1][CLEAR] + bottle[2][GREEN];
   
   
  if ((bottle[0][BROWN] + bottle[1][GREEN] + bottle[2][CLEAR]) > not_move_bottle)
  if ((bottle[0][BROWN] + bottle[1][GREEN] + bottle[2][CLEAR]) > not_move_bottle)
  {
  {
  bin[0] = BROWN;
  bin[0] = BROWN;
  bin[1] = GREEN;
  bin[1] = GREEN;
  bin[2] = CLEAR;
  bin[2] = CLEAR;
  not_move_bottle = bottle[0][BROWN] + bottle[1][GREEN] + bottle[2][CLEAR];
  not_move_bottle = bottle[0][BROWN] + bottle[1][GREEN] + bottle[2][CLEAR];
  }
  }
  if ((bottle[0][CLEAR] + bottle[1][BROWN] + bottle[2][GREEN]) > not_move_bottle)
  if ((bottle[0][CLEAR] + bottle[1][BROWN] + bottle[2][GREEN]) > not_move_bottle)
  {
  {
  bin[0] = CLEAR;
  bin[0] = CLEAR;
  bin[1] = BROWN;
  bin[1] = BROWN;
  bin[2] = GREEN;
  bin[2] = GREEN;
  not_move_bottle = bottle[0][CLEAR] + bottle[1][BROWN] + bottle[2][GREEN];
  not_move_bottle = bottle[0][CLEAR] + bottle[1][BROWN] + bottle[2][GREEN];
  }
  }
  if ((bottle[0][CLEAR] + bottle[1][GREEN] + bottle[2][BROWN]) > not_move_bottle)
  if ((bottle[0][CLEAR] + bottle[1][GREEN] + bottle[2][BROWN]) > not_move_bottle)
  {
  {
  bin[0] = CLEAR;
  bin[0] = CLEAR;
  bin[1] = GREEN;
  bin[1] = GREEN;
  bin[2] = BROWN;
  bin[2] = BROWN;
  not_move_bottle = bottle[0][CLEAR] + bottle[1][GREEN] + bottle[2][BROWN];
  not_move_bottle = bottle[0][CLEAR] + bottle[1][GREEN] + bottle[2][BROWN];
  }
  }
  if ((bottle[0][GREEN] + bottle[1][BROWN] + bottle[2][CLEAR]) > not_move_bottle)
  if ((bottle[0][GREEN] + bottle[1][BROWN] + bottle[2][CLEAR]) > not_move_bottle)
  {
  {
  bin[0] = GREEN;
  bin[0] = GREEN;
  bin[1] = BROWN;
  bin[1] = BROWN;
  bin[2] = CLEAR;
  bin[2] = CLEAR;
  not_move_bottle = bottle[0][GREEN] + bottle[1][BROWN] + bottle[2][CLEAR];
  not_move_bottle = bottle[0][GREEN] + bottle[1][BROWN] + bottle[2][CLEAR];
  }
  }
  if ((bottle[0][GREEN] + bottle[1][CLEAR] + bottle[2][BROWN]) > not_move_bottle)
  if ((bottle[0][GREEN] + bottle[1][CLEAR] + bottle[2][BROWN]) > not_move_bottle)
  {
  {
  bin[0] = GREEN;
  bin[0] = GREEN;
  bin[1] = CLEAR;
  bin[1] = CLEAR;
  bin[2] = BROWN;
  bin[2] = BROWN;
  not_move_bottle = bottle[0][GREEN] + bottle[1][CLEAR] + bottle[2][BROWN];
  not_move_bottle = bottle[0][GREEN] + bottle[1][CLEAR] + bottle[2][BROWN];
  }
  }
   
   
Line 73: Line 73:
  for (i = 0; i < 3; i++)
  for (i = 0; i < 3; i++)
  {
  {
  if (bin[i] == BROWN)
  if (bin[i] == BROWN)
  cout << "B";
  cout << "B";
  else if (bin[i] == CLEAR)
  else if (bin[i] == CLEAR)
  cout << "C";
  cout << "C";
  else
  else
Line 86: Line 86:


----
----
[[EcologicalBinPacking]]
EcologicalBinPacking
 

Latest revision as of 00:16, 27 March 2026

소감

소스

#include <iostream>
using namespace std;

#define BROWN 0
#define GREEN 1
#define CLEAR 2

int main()
{
	while (true)
	{
	int bottle[3][3];	// 병
	int bin[3];			// 통
	int min_move = 0;	// 최소 이동수 = 전체 병 수 - 이동하지 않는 병 수
	int total_bottle = 0;
	int not_move_bottle = 0;
	int i, j;

	for (i = 0; i < 3; i++)
		for (j = 0; j < 3; j++)
		{
			if (!(cin >> bottle[i][j]))
				return 0;
			total_bottle += bottle[i][j];
		}

	bin[0] = BROWN;
	bin[1] = CLEAR;
	bin[2] = GREEN;
	not_move_bottle = bottle[0][BROWN] + bottle[1][CLEAR] + bottle[2][GREEN];

	if ((bottle[0][BROWN] + bottle[1][GREEN] + bottle[2][CLEAR]) > not_move_bottle)
	{
		bin[0] = BROWN;
		bin[1] = GREEN;
		bin[2] = CLEAR;
		not_move_bottle = bottle[0][BROWN] + bottle[1][GREEN] + bottle[2][CLEAR];
	}
	if ((bottle[0][CLEAR] + bottle[1][BROWN] + bottle[2][GREEN]) > not_move_bottle)
	{
		bin[0] = CLEAR;
		bin[1] = BROWN;
		bin[2] = GREEN;
		not_move_bottle = bottle[0][CLEAR] + bottle[1][BROWN] + bottle[2][GREEN];
	}
	if ((bottle[0][CLEAR] + bottle[1][GREEN] + bottle[2][BROWN]) > not_move_bottle)
	{
		bin[0] = CLEAR;
		bin[1] = GREEN;
		bin[2] = BROWN;
		not_move_bottle = bottle[0][CLEAR] + bottle[1][GREEN] + bottle[2][BROWN];
	}
	if ((bottle[0][GREEN] + bottle[1][BROWN] + bottle[2][CLEAR]) > not_move_bottle)
	{
		bin[0] = GREEN;
		bin[1] = BROWN;
		bin[2] = CLEAR;
		not_move_bottle = bottle[0][GREEN] + bottle[1][BROWN] + bottle[2][CLEAR];
	}
	if ((bottle[0][GREEN] + bottle[1][CLEAR] + bottle[2][BROWN]) > not_move_bottle)
	{
		bin[0] = GREEN;
		bin[1] = CLEAR;
		bin[2] = BROWN;
		not_move_bottle = bottle[0][GREEN] + bottle[1][CLEAR] + bottle[2][BROWN];
	}

	min_move = total_bottle - not_move_bottle;	

	for (i = 0; i < 3; i++)
	{
		if (bin[i] == BROWN)
			cout << "B";
		else if (bin[i] == CLEAR)
			cout << "C";
		else
			cout << "G";
	}
	cout << " " << min_move << endl;
	}
}

댓글


EcologicalBinPacking