連連看是一款老少皆宜,大眾喜聞樂見的遊戲,只要將相同的兩張牌用三根以內的直線連在一起就可以消除,規則簡單,容易上手。
普通的連連看都是在二維平面上的,而這次的任務沒有這麼複雜,所有的牌都排成一牌,就像一條直線,因此,這個簡化了的遊戲也被稱為「線性連連看」。
現在我們假設有n
張牌,每張牌a
i (1
≤ i
≤ n)
上的圖案用正整數編號表示。使用者每次會選中一張牌,而你要做的,就是找出在這張牌右邊的,圖案與這張牌相同的牌,並輸出其所在位置的下標。如果有多張符合條件的牌,那麼選擇最左邊的那張牌;如果沒有符合條件的牌,輸出 -1
。注意每次消掉兩張牌後,所有的牌會向左靠攏,填補剩下牌的空缺。
第一行乙個整數 t
,表示有 t
組資料。
每組資料第一行乙個整數 n (1
≤ n
≤ 1000)
,表示初始時牌的數量。接下來一行 n
個整數 a
i (1
≤ ai≤ 10
9) 每個整數表示牌上的圖案編號。再接下來一行是乙個整數q (1
≤ q
≤ 1000)
,表示使用者有 q
個操作。接下來q
行每行乙個整數 q
i表示使用者選擇了第 q
i張牌,注意 q
i可能超過現有牌的長度,此時應該輸出 -1
。 對於每個詢問,輸出答案,每個詢問佔一行。每組資料後輸出乙個空行。 2
81 1 2 2 3 3 4 4 4
1 11 1
89 3 3 4 3 6 5 4 5
1 23 4
52 2 2
2 -1
3 -1
-1 -1
#include#include#includeusing namespace std;
int main()
int q;
cin>>q;
for(int j=0;j>qi;
if(qi>l.size()) cout<
for(int k=1;k
python連連看 Python 連連看連線演算法
功能 為連連看遊戲提供連線演算法 說明 模組中包含乙個point類,該類是遊戲的基本單元 點 該類包含屬性 x,y,value。其中x,y代表了該點的座標,value代表該點的特徵 0代表沒有被填充,1 8代表被填充為遊戲圖案,9代表被填充為牆壁 模組中還包含乙個名為points的point列表,其...
python連連看 Python 連連看連線演算法
coding utf 8 連連看連線演算法 為連連看遊戲提供連線演算法 模組中包含乙個point類,該類是遊戲的基本單元 點 該類包含屬性 x,y,value。其中x,y代表了該點的座標,value代表該點的特徵 0代表沒有被填充,1 8代表被填充為遊戲圖案,9代表被填充為牆壁 模組中還包含乙個名為...
連連看演算法
前幾天看了下a 演算法,發現並不能實現連連看。a 演算法是尋找最短路徑的一種高效率的演算法,而連連看的路徑並不一定是最短的。連連看的路徑最多只能轉折3次,因此判斷兩點的可延伸點是否有重複的,如果有,折為0或1 可消除,如果沒有,再判斷每個延伸點的延伸點與目標點的延伸點是否有重複的,有則表示可以消除並...