問題 I 殘缺的棋盤

2021-08-20 06:27:50 字數 1033 閱讀 8796

在西洋棋裡,王是最重要的乙個棋子。每一步,王可以往上下左右或者對角線方向移動一步,如下圖所示。

給定兩個格仔 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 6

1 1 3 3 2 2

case 1: 7

case 2: 3

題意:很顯然,是乙個搜尋題,用dfs可能會超,我用的bfs來寫的,差不多是模板題了,跳過障礙的那個點就行了。

**:

# 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 種不同的殘缺棋盤。殘缺棋...