在西洋棋裡,王是最重要的乙個棋子。每一步,王可以往上下左右或者對角線方向移動一步,如下圖所示。
給定兩個格仔 a(r1,c1), b(r2,c2),你的任務是計算出乙個王從 a 到 b 至少需要走多少步。為了避免題目太簡單,我們從棋盤裡拿掉了乙個格仔 c(r3,c3)(abc 保證互不相同),要求王從 a走到 b 的過程中不能進入格仔 c。在本題中,各行從上到下編號為 1~8,各列從左到右編號為1~8。
輸入包含不超過 10000 組資料。每組資料報含 6 個整數 r1, c1, r2, c2, r3, c3 (1<=r1, c1, r2, c2, r3,c3<=8). 三個格仔 a, b, c 保證各不相同。
對於每組資料,輸出測試點編號和最少步數。
1 1 8 7 5 61 1 3 3 2 2
case 1: 7題意:很顯然,是乙個搜尋題,用dfs可能會超,我用的bfs來寫的,差不多是模板題了,跳過障礙的那個點就行了。case 2: 3
**:
# include # include struct qwe
que[70];
int main(void)
; // 八個方向
int head, tail;
memset(book, 0, sizeof(book));
head = tail = 1;
que[tail].x = r1;
que[tail].y = c1;
que[tail].s = 0;
tail ++;
book[r1][c1] = 1;
int k, tx, ty, flag = 0;
while (head < tail)}}
if (flag == 1)
break;
head ++;
} printf("case %d: %d\n", qqq, que[tail-1].s);
} return 0;
}
殘缺棋盤問題
殘缺棋盤問題 對於1 1 2 2 4 4 8 8等 2 k 2 k的棋盤來說,都存在乙個任意的位置,而在棋盤剩餘位置都可以用乙個或多個由三個格仔組成的l型直角版覆蓋 那麼如何覆蓋呢?在這裡 採用分而治之的方法來考慮。對於已知的殘缺位置,一定處於當前棋盤的某個象限,那麼在剩下的三個象限中在連線的地方各...
殘缺棋盤問題
殘缺棋盤問題 殘缺棋盤是乙個2 k 2 k個方格的棋盤,其中恰好有乙個方格殘缺,現在要求用三格板覆蓋棋盤,在此覆蓋中兩塊三格板不能重疊,三格板也不能覆蓋在殘缺的方格上。include include include using namespace std const int n 104 int bo...
2 2 1 殘缺棋盤
殘缺棋盤 defective chessboard 是乙個有2k 2k 個方格的棋盤,其中恰有乙個方格殘缺。圖2 3給出k 2時各種可能的殘缺棋盤,其中殘缺的方格用陰影表示。注意當k 0時,僅存在一種可能的殘缺棋盤 如圖1 4 3 a所示 事實上,對於任意k,恰好存在22k 種不同的殘缺棋盤。殘缺棋...