ZJUT 1156 線性連連看

2021-06-14 13:55:57 字數 1115 閱讀 3937

連連看是一款老少皆宜,大眾喜聞樂見的遊戲,只要將相同的兩張牌用三根以內的直線連在一起就可以消除,規則簡單,容易上手。

普通的連連看都是在二維平面上的,而這次的任務沒有這麼複雜,所有的牌都排成一牌,就像一條直線,因此,這個簡化了的遊戲也被稱為「線性連連看」

現在我們假設有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 可消除,如果沒有,再判斷每個延伸點的延伸點與目標點的延伸點是否有重複的,有則表示可以消除並...