?? c7_401.txt
字號(hào):
int base[9][3]={0, 0, 0, /* 從起跳點(diǎn)求落腳點(diǎn)的基礎(chǔ)系數(shù)數(shù)組 */
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++) /* 保存?zhèn)€點(diǎn)度數(shù)的數(shù)組 清零 */
for(j=0;j<=8;j++)
a[i][j]=0;
rm1=base[1][1]; /* 改變基礎(chǔ)數(shù)組元素排列順序 */
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++) /* 計(jì)算各點(diǎn)度數(shù)存入數(shù)組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]); /* 輸出度數(shù)表 */
}
printf("\n");
}
printf("Please Input start position:line,colume=?\n");
scanf("%d,%d",&i,&j); /* 輸入起跳點(diǎn)坐標(biāo) */
for(k=1;k<=63;k++) /* 求棋盤上63個(gè)落步點(diǎn) */
{ object[i][j]=k; /* 跳步路徑存入數(shù)組object */
min=10;
for(p=1;p<=8;p++) /* 求從當(dāng)前起跳點(diǎn)出發(fā)的8個(gè)可能落點(diǎn) */
{ x=i+base[p][1];
y=j+base[p][2];
if(x>=1&&x<=8&&y>=1&&y<=8) /* 求出的可能落點(diǎn)在棋盤內(nèi) */
if(a[x][y]!=0) /* 此點(diǎn)沒有落過棋子 */
{ a[x][y]--; /* 由于[i、j]點(diǎn)落過棋子,此點(diǎn)度數(shù)減1 */
if(min>a[x][y]) /* 判斷當(dāng)前可能點(diǎn)度數(shù)是否最小 */
{ min=a[x][y]; /* 保存可能最小度數(shù)點(diǎn)的度數(shù) */
m=x; /* 保存可能最小度數(shù)點(diǎn)的坐標(biāo) */
n=y;
}
}
}
a[i][j]=0; /* 落過棋子的[i、j]點(diǎn)度數(shù)為零 */
i=m; /* 已求出的最小度數(shù)點(diǎn)為下次搜尋的起跳點(diǎn) */
j=n;
}
object[i][j] = 64 ;
for(i=1;i<=8;++i) /* 輸出跳步結(jié)果路徑 */
{ 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個(gè)數(shù)據(jù) */
}
rm0%=8; /* 放在基礎(chǔ)數(shù)組第一位的元素循環(huán)變化 */
rm0++; /* 基礎(chǔ)數(shù)組下一元素放在第一位 */
printf("continue?(1 or 0)");
scanf("%d",&cont);
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -