問題描述:
在中國象棋的半個棋盤中(楚河漢界的一邊),馬從左下角跳到右上角的所有正確的跳法有哪些?(只能往右邊跳,包括右上和右下,不能後退)
這個問題是我們的技術總監告訴我們的,他說這是他上高中時參加的計算機程式設計比賽中的一道題(高中時就能做這樣的題,真是羨慕),如果沒學資料結構的話,寫起來就不太好下手。正好我最近在學習資料結構(學校裡學的都忘的差不多了),所以就用遞迴寫了一下,沒想到會有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 馬踏棋盤是經典的程式設計問題之一,主要的解決方案有兩種 一種是基於深度優先搜尋的方法,另一種是基於貪婪演算法的方法。第一種基於深度優先搜尋的方法是比較常用的演算法,深度優先搜尋演算法也是資料結構中的經典演算法之一,主要是採用遞迴的思想,一級一級的尋找,遍歷出所有的結果...