C语言
#include<stdio.h>
int a[8] = { 0 };
void Move(int x, int y, int t)
{
while (a[x])
{
if (a[t] == 0)
{
a[t]++;
a[y]++;
printf("%c%c+\n", t + 'A', y + 'A');
}
a[t]--;
a[x]--;
printf("%c%c-\n", t + 'A', x + 'A');
}
}
int main()
{
for (int i = 0; i < 8; i++) scanf("%d", &a[i]);
if (a[0] + a[2] + a[5] + a[7] != a[1] + a[3] + a[4] + a[6]) printf("IMPOSSIBLE\n");
else
{
Move(1, 4, 0);
Move(2, 0, 1);
Move(3, 4, 0);
Move(5, 0, 4);
Move(6, 4, 5);
Move(7, 0, 4);
while (a[0]--) printf("AE-\n");
}
return 0;
}
C++
#include<iostream>
#include<vector>
using namespace std;
const int n = 8;
vector<int> a(8);
void Move(int x, int y, int t)
{
while (a[x])
{
if (a[t] == 0)
{
a[t]++;
a[y]++;
cout << (char)(t + 'A') << (char)(y + 'A') << '+' << endl;
}
a[t]--;
a[x]--;
cout << (char)(t + 'A') << (char)(x + 'A') << '-' << endl;
}
}
int main()
{
int s1 = 0, s2 = 0;
for (int i = 0; i < n; i++) {
cin >> a[i];
if (i == 0 || i == 2 || i == 5 || i == 7)
s1 += a[i];
else
s2 += a[i];
}
if (s1 != s2) cout <<"IMPOSSIBLE"<< endl;
else
{
Move(1, 4, 0);
Move(2, 0, 1);
Move(3, 4, 0);
Move(5, 0, 4);
Move(6, 4, 5);
Move(7, 0, 4);
while (a[0]--) cout << "AE-" << endl;
}
return 0;
}