馬跳棋盤的問題

2021-04-01 09:41:59 字數 1451 閱讀 6363

問題描述:

在中國象棋的半個棋盤中(楚河漢界的一邊),馬從左下角跳到右上角的所有正確的跳法有哪些?(只能往右邊跳,包括右上和右下,不能後退)

這個問題是我們的技術總監告訴我們的,他說這是他上高中時參加的計算機程式設計比賽中的一道題(高中時就能做這樣的題,真是羨慕),如果沒學資料結構的話,寫起來就不太好下手。正好我最近在學習資料結構(學校裡學的都忘的差不多了),所以就用遞迴寫了一下,沒想到會有37種方法,沒想到呀。呵呵!大家提提意見。

源程式如下:

#include       

#define chessbdrow      5       /*棋盤的行數*/

#define chessbdcol      9       /*棋盤的列數*/

#define maxpos          20      /*到達目的地的最大步數*/

/*棋子的位置結構*/

typedef struct  pos;

pos     path[maxpos];   /*用來儲存正確的路徑*/

pos     startpos;               /*棋子所在的起始位置*/

pos     destpos;                /*目的位址*/

void    initchessboard();

void    findpath(pos pos, int direction, int count);

int     outrange(pos step);

void    display();

int     equal(pos pos1, pos pos2);

pos     nextpos(pos pos, int n);

int     isdestnation(pos pos);

int main(void)

/*初始化棋盤資料*/

void initchessboard()

/*遞迴搜尋函式*/

void findpath(pos currentpos, int direction, int count)

else

if ( isdestination(currentpos) )

else }}

/* 返回pos位置的第n個方向所能到達的位置*/

pos nextpos(pos pos, int n)

return next;

}/*測試是否越界*/

int outrange(pos pos)

/*測試兩個點是否相同*/

int equal(pos pos1, pos pos2)

/*是否到達目的位址*/

int isdestination(pos pos)

/*顯示正確的路徑*/

void display(pos path, int n)

printf("/n");

}

馬踏棋盤python 馬踏棋盤python實現

import collections import random class checkerboard object 初始化棋盤 def init self,len self.len len self.position has gone set def init checkerboard self ...

馬踏棋盤問題(dfs求解)

問題描述 8 8的棋盤,剛開始讓馬在棋盤的任意乙個位置上,讓馬踏日,有八個方向 判斷沒踏過並且可踏,就踏,直到踏完所有的格仔 cnt 64 呼叫printchess函式。在外層另外加上兩層,確保 8 8 方格中的每乙個格仔都有8中不同的選擇 重點 為了確保每個格仔能走日字,而且選擇的可能性等同,初始...

馬踏棋盤的實現

一 馬踏棋盤經典演算法描述 1 馬踏棋盤是經典的程式設計問題之一,主要的解決方案有兩種 一種是基於深度優先搜尋的方法,另一種是基於貪婪演算法的方法。第一種基於深度優先搜尋的方法是比較常用的演算法,深度優先搜尋演算法也是資料結構中的經典演算法之一,主要是採用遞迴的思想,一級一級的尋找,遍歷出所有的結果...