7-9 跳馬問題 (20 分)
給定m*n(mn<=100)的棋盤,左上角的點座標(1,1),一匹馬從(1,2)點開始沿著日字型(有8種)跳完棋盤上所有點,且每乙個點都只能跳一次,馬每一步從(x,y)點起跳時優先選擇的方向對應座標偏移為:,,,,,,,。有的棋盤會有很多種跳法,現在比較感興趣的是馬的第k種跳法是什麼?
輸入格式:
一行三個整數m,n,k。
輸出格式:
輸出馬的第k種跳法,如果馬無法跳完棋盤所有點則輸出impossible,如果所有跳法數不到k種,則輸出最後一種跳法 。
輸入樣例:
在這裡給出一組輸入。例如:
4 4 1
4 5 6
輸出樣例:
在這裡給出相應的輸出。例如:
impossible
20 1 16 9 12
15 8 11 4 17
2 19 6 13 10
7 14 3 18 5
#include
int m, n, k;
int count1 =
1, count2, mul, loop;
//count1為跳馬步數,count2為第k個種情況
int vis[
100]
[100];
int obj[
100]
[100];
//目標陣列
int dir[8]
[2]=
,,,,
,,,}
;//方向陣列
void
dfs(
int x,
int y)
} count2++
;//目前為第count2種跳馬方法
if(count2 == k)
}else}}
}int
main()
else
}putchar
('\n');
}}else
return0;
}
7 24 跳馬問題 10分
馬在中國象棋以日字形規則移動。請編寫一段程式,給定n m大小的棋盤,以及馬的初始位置 x,y 要求不能重複經過棋盤上的同乙個點,計算馬可以有多少途徑遍歷棋盤上的所有點。輸入格式 第一行為整數t t 10 表示測試資料組數。每一組測試資料報含一行,為四個整數,分別為棋盤的大小以及初始位置座標n,m,x...
7 9 找鞍點 20分
乙個矩陣元素的 鞍點 是指該位置上的元素值在該行上最大 在該列上最小。本題要求編寫程式,求乙個給定的n階方陣的鞍點。輸入第一行給出乙個正整數n 1 n 6 隨後n行,每行給出n個整數,其間以空格分隔。輸出在一行中按照 行下標 列下標 下標從0開始 的格式輸出鞍點的位置。如果鞍點不存在,則輸出 non...
7 9 找鞍點 20分
乙個矩陣元素的 鞍點 是指該位置上的元素值在該行上最大 在該列上最小。本題要求編寫程式,求乙個給定的n階方陣的鞍點。輸入格式 輸入第一行給出乙個正整數n 1 n 6 隨後n行,每行給出n個整數,其間以空格分隔。輸出格式 輸出在一行中按照 行下標 列下標 下標從0開始 的格式輸出鞍點的位置。如果鞍點不...