#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
void Step2(int Max[3][3]);
void Step3(int Max[3][3]);
void Step6(int Max[3][3]);
void Step45(int Max[3][3]);
void Step7(int Max[3][3]);
void Step8(int Max[3][3]);
void Step9(int Max[3][3]);
void swap(int &a, int &b) {
int temp;
temp = a;
a = b;
b = temp;
}
//
void Step1(int Max[3][3]) {
while (Max[0][2] == 0 || Max[0][2] == 1) {
swap(Max[0][2], Max[0][1]);
swap(Max[0][2], Max[1][2]);
}
printf("step1:");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
{
printf("%d", Max[i][j]);
}
printf(" ");
}
Step2(Max);
}
void Step2(int Max[3][3]) {
while (Max[0][0] != 1) {
if (Max[0][0] == 0) { swap(Max[0][0], Max[1][0]); }
if (Max[1][0] == 0) { swap(Max[1][0], Max[2][0]); }
if (Max[2][0] == 0) { swap(Max[2][0], Max[2][1]); }
if (Max[2][1] == 0) { swap(Max[2][1], Max[2][2]); }
if (Max[2][2] == 0) { swap(Max[2][2], Max[1][2]); }
if (Max[1][2] == 0) { swap(Max[1][2], Max[1][1]); }
if (Max[1][1] == 0) { swap(Max[1][1], Max[0][1]); }
if (Max[0][1] == 0) { swap(Max[0][1], Max[0][0]); }
}
printf("step2:");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
{
printf("%d", Max[i][j]);
}
printf(" ");
}
Step3(Max);
}
//
void Step3(int Max[3][3]) {
while (Max[0][1] != 2) {
if (Max[0][1] == 0) { swap(Max[1][1], Max[0][1]); }
if (Max[1][1] == 0) { swap(Max[1][0], Max[1][1]); }
if (Max[1][0] == 0) { swap(Max[1][0], Max[2][0]); }
if (Max[2][0] == 0) { swap(Max[2][1], Max[2][0]); }
if (Max[2][1] == 0) { swap(Max[2][2], Max[2][1]); }
if (Max[2][2] == 0) { swap(Max[2][2], Max[1][2]); }
if (Max[1][2] == 0) { swap(Max[1][2], Max[0][2]); }
if (Max[0][2] == 0) { swap(Max[0][2], Max[0][1]); }
}
printf("step3:");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
{
printf("%d", Max[i][j]);
}
printf(" ");
}
if (Max[0][2] == 3) {
Step6(Max);
}
else {
Step45(Max);
}
}
/
void Step45(int Max[3][3]) {
while (Max[1][1] != 3 || Max[1][0]!=0) {
if (Max[1][0] == 0) { swap(Max[1][0], Max[2][0]); }
if (Max[1][1] == 0) { swap(Max[1][1], Max[1][0]); }
if (Max[1][2] == 0) { swap(Max[1][2], Max[1][1]); }
if (Max[2][2] == 0) { swap(Max[2][2], Max[1][2]); }
if (Max[2][1] == 0) { swap(Max[2][1], Max[2][2]); }
if (Max[2][0] == 0) { swap(Max[2][0], Max[2][1]); }
}
Max[1][1] = Max[1][2];
Max[1][2] = Max[0][2];
Max[0][2] = 3;
printf("step45:");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
{
printf("%d", Max[i][j]);
}
printf(" ");
}
Step6(Max);
}
//
///
void Step6(int Max[3][3]){
while (Max[1][2] != 4) {
if (Max[1][0] == 0) { swap(Max[1][0], Max[2][0]); }
if (Max[1][1] == 0) { swap(Max[1][1], Max[1][0]); }
if (Max[1][2] == 0) { swap(Max[1][2], Max[1][1]); }
if (Max[2][2] == 0) { swap(Max[2][2], Max[1][2]); }
if (Max[2][1] == 0) { swap(Max[2][1], Max[2][2]); }
if (Max[2][0] == 0) { swap(Max[2][0], Max[2][1]); }
}
printf("step6:");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
{
printf("%d", Max[i][j]);
}
printf(" ");
}
if (Max[2][2] == 5) {
Step9(Max);
}
else {
Step7(Max);
}
}
/
void Step7(int Max[3][3]) {
while (Max[1][1] != 5) {
if (Max[1][0] == 0) { swap(Max[1][0], Max[2][0]); }
if (Max[1][1] == 0) { swap(Max[1][1], Max[1][0]); }
if (Max[2][1] == 0) { swap(Max[2][1], Max[1][1]); }
if (Max[2][0] == 0) { swap(Max[2][0], Max[2][1]); }
}
printf("step7:");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
{
printf("%d", Max[i][j]);
}
printf(" ");
}
Step8(Max);
}
/
void Step8(int Max[3][3]) {
while (Max[1][0] != 0) {
if (Max[0][0] == 0) { swap(Max[0][0], Max[1][0]); }
if (Max[0][1] == 0) { swap(Max[0][1], Max[0][0]); }
if (Max[0][2] == 0) { swap(Max[0][1], Max[0][2]); }
if (Max[1][2] == 0) { swap(Max[1][2], Max[1][1]); }
if (Max[2][2] == 0) { swap(Max[2][2], Max[1][2]); }
if (Max[2][1] == 0) { swap(Max[2][1], Max[2][2]); }
if (Max[1][1] == 0) { swap(Max[2][1], Max[1][1]); }
}
printf("step8:");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
{
printf("%d", Max[i][j]);
}
printf(" ");
}
Step9(Max);
}
//
void Step9(int Max[3][3]) {
while (Max[2][1] != 6) {
if (Max[1][0] == 0) { swap(Max[1][0], Max[2][0]); }
if (Max[1][1] == 0) { swap(Max[1][1], Max[1][0]); }
if (Max[2][1] == 0) { swap(Max[2][1], Max[1][1]); }
if (Max[2][0] == 0) { swap(Max[2][0], Max[2][1]); }
}
printf("step9:");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
{
printf("%d", Max[i][j]);
}
printf(" ");
}
}
//
int main()
{
int MAx[3][3] = {2,0,1,4,6,5,3,7,8};
Step1(MAx);
return 0;
}
|