アットウィキロゴ

Flying Jenny

0082 : Flying Jenny



解説

条件に合うようなメリーゴーランドの並べ方を出力する。
メリーゴーランドの並び方は8種類なので、先に並び方を全て配列に格納しておき、
小さいほうから順に調べていけばいい。

ただ、最小値を求めるとき、最初の値が小さいとWAになってしまうので注意(10000でもWAになった)。

プログラム

C


C++

+ ...
#include <iostream>
#include <string>
#include <climits>
using namespace std;

string pos[] = {
"12121414",
	"12141412",
	"14121214",
	"14141212",
	"21214141",
	"21414121",
	"41212141",
	"41412121",
};

int main() {
	int n[8];
	while (cin >> n[0] >> n[1] >> n[2] >> n[3] >> n[4] >> n[5] >> n[6] >> n[7]) {
		int min = INT_MAX;
		string ans;
		for (int i = 0; i < 8; i++) {
			int sum = 0;
			for (int j = 0; j < 8; j++) {
			int a = n[j] - (pos[i][j] - '0');
				if (a < 0) a = 0;
				sum += a;
			}

			if (min > sum) {
				ans = pos[i];
				min = sum;
			}
	}

		cout << ans[0];
		for (int i = 1; i < 8; i++) {
			cout << " " << ans[i];
		}
		cout << endl;
	}

	return 0;
}

Java

最終更新:2013年01月14日 16:28