⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nine.txt

📁 C语言编写的,效果不错
💻 TXT
字号:
 ///////////////////////////////////////// 九宫图算法;//////////////////////////////////////#include<stdio.h>#include<time.h>#include<stdlib.h>//////////////////////////////////////     the function defination//////////////////////////////////void create(int [][3]);void show(int [][3]);void set_value(int [][3]);void aim_get(int [][3]);void target(int [][3]);void judge_x1(int [][3]);void judge_x2(int [][3]);void judge_x3(int [][3]);void judge_x4(int [][3]);void judge_x5(int [][3]);void shift_all(int [][3]);void shift_low_six(int [][3]);void anti_shift_all(int [][3]);void shift_low_four(int [][3]);void last_shift(int [][3]);void set_x5(int [][3]);/////////////////////////////////////////////    the main function body  ////////////////////////////////////////////main(){   srand(time(NULL));  int cDiagram[3][3];  create(cDiagram);     ///////   creat the new array ,set the value are 10;  set_value(cDiagram);  //last_shift(cDiagram);  return 0;}//////////////////////////////////////////  建立一个3*3数组,初值都设为10;////////////////////////////////////////void create(int array[][3]){ printf("\n\n***********************************\n\n");    printf("九宫图算法实现过程\n\n"); printf("***********************************\n\n");    int line; int row; for(line=0;line<3;line++) {  for(row=0;row<3;row++)  {   array[line][row]=10;  } }    // set_value(array); //show(array);}////////////////////////////////////////////  显示数组状态  ////////////////////////////////////////////void show(int array[][3]){    for(int i=0;i<3;i++) {  for(int j=0;j<3;j++)  {   printf("%3d",array[i][j]);  }  printf("\n\n"); }}////////////////////////////////// 产生数组的初始状态  //////////////////////////////////////void set_value(int array[][3]){ int i=0; int rand_num_line;    int rand_num_row; printf("    \n\n九宫图的初始值为:\n\n");  while(i<=8) {       rand_num_line=rand()%3;    rand_num_row=rand()%3;    if(array[rand_num_line][rand_num_row]!=i&& array[rand_num_line][rand_num_row]==10)    {     array[rand_num_line][rand_num_row]=i;     ++i;     } } show(array); //printf(" let's begin!!\n");    aim_get(array);}////////////////////////////////////////////////////////////  judge the initial array get the target or no !  /////////////////////////////////////////////////////////////void aim_get(int array[][3]){ int aim[3][3]={{1,2,3},{8,0,4},{7,6,5}}; int line; int row; int judge=0; for(line=0;line<3;line++) {  for(row=0;row<3;row++)  {             if(array[line][row]!=aim[line][row])    {     judge=1;    }  } } if(judge==1) {   judge_x1(array); } else {    target(array); }}//////////////////////////////////////////// the target diagram ///////////////////////////////////////////////void target(int array[][3]){ printf("\n\n     the last diagram is :\n"); show(array);}///////////////////////////////////////judge the x1 is 1 or no!  ///////////////////////////////////////////void judge_x1(int array[3][3]){  //int x1=1;    int temp;  //printf("  \n\n\n the array[0][2]=%d\n\n",array[0][2]);  if(array[0][2]!=1 && array[0][2]!=0)              // x3!=1 || x3!=0;  {        while(array[0][0]!=1)    {        //printf("i am here!!1");    temp=array[0][0];    array[0][0]=array[0][1];    array[0][1]=array[1][1];    array[1][1]=array[1][2];    array[1][2]=array[2][2];    array[2][2]=array[2][1];    array[2][1]=array[2][0];    array[2][0]=array[1][0];    array[1][0]=temp;    }  }  else   {                  if(array[0][2]==0)                       // x3==0;   {   // printf("\n\n array[0][2]=0\n\n");   temp=array[0][2];   array[0][1]=array[0][2];   array[0][2]=temp;   judge_x1(array);   goto tt;   }   else                                    /// x3==1;   {   //printf("\n\narray[0][2] should is 1,   %d",array[0][2]);    if(array[1][1]==0)                  //// x0==0;    {     temp=array[0][1];     array[0][1]=array[1][1];     array[1][1]=temp;     judge_x1(array);    }    else                                //// x3==1 && x0!=0;    {         shift_all(array);     judge_x1(array);    }   }  }   printf("  确定了X1位置后,九宫图为:\n");      show(array);   judge_x2(array);tt:   int p=1;}///////////////////////////////////// judge the x2's position ///////////////////////////////////////void judge_x2(int array[][3]){   int temp;   while(array[0][1]!=2)   {   temp=array[0][1];   array[0][1]=array[0][2];   array[0][2]=array[1][2];   array[1][2]=array[2][2];   array[2][2]=array[2][1];   array[2][1]=array[2][0];   array[2][0]=array[1][0];   array[1][0]=array[1][1];   array[1][1]=temp;   }   printf("  确定了X2位置后,九宫图为: \n");   show(array);   judge_x3(array);}////////////////////////////////////////////////////////////       shift from array[1][0] to array[2][2]  ///////////////////////////////////////////////////////////void shift_low_six(int array[][3]){ int temp; temp=array[1][0]; array[1][0]=array[1][1]; array[1][1]=array[1][2]; array[1][2]=array[2][2]; array[2][2]=array[2][1]; array[2][1]=array[2][0]; array[2][0]=temp;     } ////////////////////////////////////////////////////////////   shift from array[0][0]  to array[2][2]  /////////////////////////////////////////////////////////////////void shift_all(int array[][3]){ int temp;     temp=array[0][0];     array[0][0]=array[0][1];     array[0][1]=array[0][2];     array[0][2]=array[1][2];     array[1][2]=array[2][2];     array[2][2]=array[2][1];     array[2][1]=array[2][0];     array[2][0]=array[1][0];     array[1][0]=temp;} ///////////////////////////////////////////////// shift aiti-direction ///////////////////////////////////////////////void anti_shift_all(int array[][3]){ int temp;       temp=array[1][0];       array[1][0]=array[2][0];        array[2][0]=array[2][1];       array[2][1]=array[2][2];       array[2][2]=array[1][2];       array[1][2]=array[0][2];        array[0][2]=array[0][1];       array[0][1]=array[0][0];        array[0][0]=temp;        }///////////////////////////////////////////////      judge x3's position     /////////////////////////////////////////////////void judge_x3(int array[][3]){      int line;   int row;   int temp;   if(array[0][2]!=3)   {    while(array[1][1]!=3)                      // shift the int ,untill 3 stay in x0     {     shift_low_six(array);    }    for(int i=0;i<=2;i++)    {     for(int j=0;j<=2;j++)     {      if(array[i][j]==0)      {      line= i;      row=j;      }     }    }   if(line==0&&row==2)   {            shift_all(array);      }   else if(line==1&&row==2)   {          shift_all(array);    temp=array[0][1];    array[0][1]=array[0][2];    array[0][2]=temp;   }   else if(line==2&&row==2)   {    shift_all(array);    temp=array[1][2];    array[1][2]=array[0][2];    array[0][2]=array[0][1];    array[0][1]=temp;   }   else if(line==2&&row==1)   {    shift_all(array);    temp=array[2][2];    array[2][2]=array[1][2];    array[1][2]=array[0][2];    array[0][2]=array[0][1];    array[0][1]=temp;   }   else if(line==2&&row==0)   {    array[2][0]=array[1][0];    array[1][0]=array[0][0];    array[0][0]=array[0][1];          array[0][1]=0;   }   else   {    array[1][0]=array[0][0];    array[0][0]=array[0][1];    array[0][1]=0;   }   array[0][1]=3;   array[1][1]=0;    anti_shift_all(array);   }     printf("   确定了X3位置后,九宫图为:\n");   show(array);   judge_x4(array);}////////////////////////////////////////////////////   judge x4's position    ////////////////////////////////////////////////////////void judge_x4(int array[][3]){ while(array[1][2]!=4) {  shift_low_six(array); } printf("  确定了X4位置后,九宫图为:\n"); show(array); judge_x5(array);}///////////////////////////////////////////////    shift_low_four    //////////////////////////////////////////////////////void shift_low_four(int array[][3]){  int temp;         temp=array[1][1]; array[1][1]=array[2][1]; array[2][1]=array[2][0];    array[2][0]=array[1][0];    array[1][0]=temp;}////////////////////////////////////////////////////     judge x5's position     /////////////////////////////////////////////////////////void judge_x5(int array[][3]){   if(array[2][2]==0)  {   while(array[1][1]!=5)    shift_low_four(array);   shift_all(array);   set_x5(array);  }  else if(array[2][2]!=5)  {      while(array[1][1]!=5)       shift_low_four(array);   if(array[2][1]==0)   {    shift_all(array);          array[2][2]=array[1][2];    set_x5(array);   }   else if(array[2][0]==0)   {         shift_all(array);   array[2][1]=array[2][2];   array[2][2]=array[1][2];   set_x5(array);   }   else if(array[1][0]==0)   {    shift_all(array);    array[2][0]=array[2][1];    array[2][1]=array[2][2];    array[2][2]=array[1][2];    set_x5(array);       }  }    printf("  确定了X5位置后,九宫图为:\n"); show(array); last_shift(array);  }void set_x5(int array[][3]){          array[1][2]=5;    array[1][1]=0;    anti_shift_all(array);}/*void judge_x7(int array[][3]){ if(array[2][2]!=0 || array[2][2]!=5)    //x5!=0||x5!=5 {     while(array[1][1]!=5)                {     shift_low_four(array);  }  if(array[2][1]==0)  {  shift_all(array);  array[2][2]=array[1][2];  array[1][2]=0;  }  else         if(array[2][0]==0)   {   shift_all(array);   array[2][1]=array[2][2];   array[2][2]=array[1][2];   array[1][2]=0;   }      else   {    if(array[1][0]==0)    {         array[1][0]=array[0][0];         array[0][0]=array[0][1];         array[0][1]=array[0][2];         array[0][2]=array[1][2];         array[1][2]=0;        }  }  array[1][2]=5;  array[1][1]=0;  printf("\nthe array[2][1]=%d\n",array[2][1]);  show(array);  //anti_shift_all(array);  printf("\nthe array[2][1]=%d\n",array[2][1]);   } else      if(array[2][2]==0)               //x5==5  {        while(array[2][1]!=5)  {   shift_low_four(array);  }        array[2][2]=5;  array[2][1]=0;  } }    printf("  确定了X5位置后,九宫图为:\n"); show(array); last_shift(array);*/////////////////////////////////////////////////         last_shift   /////////// // to determine the last four numbers///////  x6,x7,x8,x0          /////////////////////////////////////////////////////void last_shift(int array[][3]){    int temp; while(array[2][1]!=6) {  shift_low_four(array); } if(array[1][1]!=0) {  if(array[1][0]==0)  {      temp=array[1][0];   array[1][0]=array[1][1];   array[1][1]=temp;  }  else  {   array[2][0]=array[1][0];   array[1][0]=array[1][1];   array[1][1]=0;  } }     printf("***********************************\n");  printf("***********************************\n\n");  printf("  经过计算,最终的九宫图为: \n");  show(array); if(array[2][0]==7) {            printf("****************************\n");   printf("**  此为九宫图的最终解!  **\n");   printf("****************************\n"); }    else {   printf("****************************\n");   printf("**  对不起,此无解九宫图!**\n");   printf("****************************\n"); } } 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -