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

📄 c7_401.txt

📁 第一节 数组的基本概念 第二节 一维数组 第三节 二维数组 第四节 应用实例
💻 TXT
字号:
          int base[9][3]={0, 0, 0,          /* 从起跳点求落脚点的基础系数数组 */
	                      0, 1, 2,
                          0, 2, 1,
                    	      0, 2,-1,
                    	      0, 1,-2,
                    	      0,-1,-2,
                    	      0,-2,-1,
                    	      0,-2, 1,
                    	      0,-1, 2 };
          main()
          {  int a[9][9],object[9][9];
             int i,j,k,p,x,y,m,n,cont;
             int min,rm1,rm2,rm0=1;
             for(cont=1;cont>0;)
             {  for(i=0;i<=8;i++)               /* 保存个点度数的数组 清零 */
           	       for(j=0;j<=8;j++)
          	          a[i][j]=0;
                rm1=base[1][1];                 /* 改变基础数组元素排列顺序 */
                rm2=base[1][2];
                base[1][1]=base[rm0][1];
                base[1][2]=base[rm0][2];
                base[rm0][1]= rm1;
                base[rm0][2]= rm2;
                for(i=1;i<=8;i++)
                {  for(j=1;j<=8;j++)              /* 计算各点度数存入数组a */
          	       {  for(p=1;p<=8;p++)
          	          {  x=i+base[p][1];
          	             y=j+base[p][2];
          	             if(x>=1&&x<=8&&y>=1&&y<=8)
          		            a[x][y]++;
          	          }
          	           printf(" %d",a[i][j]);                 /* 输出度数表 */
          	       }
          	       printf("\n");
                }
                printf("Please Input start position:line,colume=?\n");
                scanf("%d,%d",&i,&j);                     /* 输入起跳点坐标 */
                for(k=1;k<=63;k++)                  /* 求棋盘上63个落步点 */
                {  object[i][j]=k;               /* 跳步路径存入数组object */
          	       min=10;
          	       for(p=1;p<=8;p++)   /* 求从当前起跳点出发的8个可能落点 */
           	       {  x=i+base[p][1];
          	          y=j+base[p][2];
          	          if(x>=1&&x<=8&&y>=1&&y<=8)   /* 求出的可能落点在棋盘内 */
          	             if(a[x][y]!=0)                  /* 此点没有落过棋子 */ 
          	             {  a[x][y]--; /* 由于[i、j]点落过棋子,此点度数减1 */
          		            if(min>a[x][y])    /* 判断当前可能点度数是否最小 */
          		            {  min=a[x][y];     /* 保存可能最小度数点的度数 */
          		               m=x;             /* 保存可能最小度数点的坐标 */
          		               n=y;
          		            }
          	             }
          	          }
          	          a[i][j]=0;              /* 落过棋子的[i、j]点度数为零 */
          	          i=m;          /* 已求出的最小度数点为下次搜寻的起跳点 */
          	          j=n;
                   }
                   object[i][j] = 64 ;
                   for(i=1;i<=8;++i)                   /* 输出跳步结果路径 */
                   {  for(j=1;j<=8;j++)
          	             if(j==8)  printf("%2d",object[i][j]);
          	             else      printf("%2d   ",object[i][j]);
          	          printf("\n");
          	          if(i!=8)  printf(" \n");          /* 每行输出8个数据 */
                   }
                   rm0%=8;              /* 放在基础数组第一位的元素循环变化 */
                   rm0++;                     /* 基础数组下一元素放在第一位 */
                   printf("continue?(1 or 0)");
                   scanf("%d",&cont);
              }
           }

⌨️ 快捷键说明

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