将1~8个数随机的填写到该数阵的外层圆圈中,只剩下中间的一个空圆圈。规定每个数字只能按照数阵中的直线从一个圆圈移动到另一个空的圆圈中。通过若干步的移动,要求将该数阵中的数字移动成为图中所示的状态
void Print(int m[]) {
printf(" [%d]--[%d]--[%d]\n", m[0], m[1], m[2]);
printf(" | %c | %c | \n", 92, 47);
printf(" [%d]--[ ]--[%d]\n", m[7], m[3]);
printf(" | %c | %c | \n", 47, 92);
printf(" [%d]--[%d]--[%d]\n", m[6], m[5], m[4]);
}
void getStep(int m[]) {
for (int i = 0; i < 8; ++i) {
for (int j = 0; j < 8 - i - 1; ++j) {
if (m[j] > m[j + 1]) {
int tmp = m[j];
m[j] = m[j + 1];
m[j + 1] = tmp;
printf("(%d# --> 0#)\n", j + 1);
printf("(%d# --> %d#)\n", j + 2, j + 1);
printf("(0# --> %d#)\n", j + 2);
}
}
}
printf("\n");
}
int main(int argc, const char *argv[]) {
int i, m[8];
printf("Please input 8 integer (1~8) to arrange this matrix\n");
for (i = 0; i < 8; ++i) {
scanf("%d", &m[i]);
}
printf("The initial data matrix is like\n");
Print(m);
printf("\nMove Step:\n");
getStep(m);
printf("The result of moving is\n");
Print(m);
return 0;
}