problem description
蜘蛛牌是windows xp作業系統自帶的一款紙牌遊戲,遊戲規則是這樣的:只能將牌拖到比她大一的牌上面(a最小,k最大),如果拖動的牌上有按順序排好的牌時,那麼這些牌也跟著一起移動,遊戲的目的是將所有的牌按同一花色從小到大排好,為了簡單起見,我們的遊戲只有同一花色的10張牌,從a到10,且隨機的在一行上展開,編號從1到10,把第i號上的牌移到第j號牌上,移動距離為abs(i-j),現在你要做的是求出完成遊戲的最小移動距離。
input
第乙個輸入資料是t,表示資料的組數。
每組資料有一行,10個輸入資料,資料的範圍是[1,10],分別表示a到10,我們保證每組資料都是合法的。
output
對應每組資料輸出最小移動距離。
sample input
1
1 2 3 4 5 6 7 8 9 10
sample output
9
思路如下:這一題 我們可以的 pos_card,去儲存 每張牌的位置,然後我們通過深搜 去遍歷每一種 符合題意的移動的情況(理解不通直接看**)。題解如下:
#include
#include
#include
using namespace std;
int pos_card[15]
;//用來儲存某張牌的位置
int mark[15]
;//用來做標記用的,
int min_sum;
//用來記錄最小的移動距離
void
dfs(
int k,
int sum)
//進行了k次對牌的移動操作,最當前小移動距離為sum
for(
int i=
1;i<
10;i++
)//這裡的 i 表示是牌上的數字(就是要被 移動的牌)
} mark[i]=0
;//回溯清除標記,進行下一種情況的嘗試(這個需要自己理解)}}
}int
main()
dfs(0,
0); cout<}return0;
}
蜘蛛牌 (DFS應用)
並不太理解其中原理。蜘蛛牌是windows xp作業系統自帶的一款紙牌遊戲,遊戲規則是這樣的 只能將牌拖到比她大一的牌上面 a最小,k最大 如果拖動的牌上有按順序排好的牌時,那麼這些牌也跟著一起移動,遊戲的目的是將所有的牌按同一花色從小到大排好,為了簡單起見,我們的遊戲只有同一花色的10張牌,從a到...
hdu 蜘蛛牌(經典DFS)
problem description 蜘蛛牌是windows xp作業系統自帶的一款紙牌遊戲,遊戲規則是這樣的 只能將牌拖到比她大一的牌上面 a最小,k最大 如果拖動的牌上有按順序排好的牌時,那麼這些牌也跟著一起移動,遊戲的目的是將所有的牌按同一花色從小到大排好,為了簡單起見,我們的遊戲只有同一花...
DFS 深度優先遍歷搜尋解析)
深度優先搜尋思想 深度優先搜尋遍歷類似於樹的先序遍歷。假定給定圖g的初態是所有頂點均未被訪問過,在g中任選乙個頂點i作為遍歷的初始點,則深度優先搜尋遞迴呼叫包含以下操作 1 訪問搜尋到的未被訪問的鄰接點 2 將此頂點的visited陣列元素值置1 3 搜尋該頂點的未被訪問的鄰接點,若該鄰接點存在,則...