但是小江並不滿足於這個遊戲規則,因為他覺得最多只能拐2折這個限制並不合理。好奇的小江想知道的是,給定乙個連連看的狀態以及某乙個牌子,在k折以內可以到達的所有具有相同圖案的牌子的數量是多少。
每個輸入資料報含多個測試點。
第一行為測試點的個數s <= 20。之後是s個測試點的資料。
每個測試點的第一行為1 <= n <= 200, 1 <= m <= 200,表示連連看的大小。接下來的n行,每一行有m個整數,表示連連看該行的狀態,如果為0,則表示該格為空,否則代表一種圖案的牌子。
然後是三個整數x <= n, y <= m,0 <= k <= 10000,表示查詢(x, y)這個牌子在k折以內能消除的所有相同牌子總數。其中連連看左上角的格仔座標為(1, 1),右下角為(n, m)。保證查詢的格仔是有圖案的。
對於每個測試點,輸出對應的能消除的所有牌子總數。
提示 樣例第乙個例子,第(1, 1), (2, 3)和(2, 5)為3個可以在3摺內被消除的相同牌子。
這題使用廣搜的思想來做。輸入
34 5
1 0 1 0 2
0 0 1 3 1
3 3 1 5 9
6 1 4 8 7
1 3 3
4 51 0 1 0 2
0 0 1 3 1
3 3 1 5 9
6 1 4 8 7
1 3 1
2 21 10
2 31 1 10輸出3
20
我們使用如下的資料結構表示乙個搜尋狀態
struct state
對當前的狀態,我們往跟原方向不在一條線上的兩個方向發散(初始時往4個方向發散),直到遇到不為0或者不合法的座標為止。將為0且未訪問過的座標用乙個狀態儲存起來並壓入佇列。將所有已訪問的座標標記一下。記錄下在轉折次數不超過k時遇到的目標點的個數即為答案。
#include
#include
#include
using
namespace
std;
struct state
state(int ox, int oy, int onum, int ocx, int ocy)
};const
int cx = ;
const
int cy = ;
int map[202][202];
bool vis[202][202];
int t, n, m, x, y, k;
//檢查是否出界
bool valid(int x, int y)
int main()
if (map[nx][ny] == map[x][y] && !vis[nx][ny])
vis[nx][ny] = true;
break;}}
while (!que.empty())
if (map[nx][ny] == map[x][y] && !vis[nx][ny])
vis[nx][ny] = true;
break;}}
}printf("%d\n", count);
}return
0;}
網易遊戲2016實習生招聘筆試題目 推箱子
對於輸入的狀態,找出玩家和箱子的位置,並使用座標記錄其位置,然後對於終端輸入的走法,依次判斷player按該走法一步一步的移動之後是否能夠成功。由於思路比較簡單,實際內容就是如何讓計算機模擬這個推箱子的過程。步驟也很簡單,只有上下左右移動,但是需要注意的是每次移動之前,需要對於題目描述的集中狀態和情...
網易遊戲 QA實習生 一面面試記錄
大四暑假內推面試了網易遊戲qa,奈何那時候水平太低,很多基礎性問題都沒答上來。妥妥的一面就掛了,面試官人很好,開始問了很多難的問題我都沒答上來,後面就問我了一些基礎知識,然而水平太低,還是不會了。c語言結構體沒有函式,c 裡面結構體可以有函式 可以展開把重要的一些內建物件講一下。list 主要子類 ...
2018網易遊戲雷火盤古實習生招聘筆試真題
1.字串編碼 輸入描述 每個測試輸入包含1個測試用例 每個測試用例輸入只有一行字串,字串只包括大寫英文本母,長度不超過10000。輸出描述 輸出編碼後的字串 輸入例子 aaaabccdaa 輸出例子 4a1b2c1d2a 思路分析 這道題好像以前是一家企業的面試題,leetcode easy級別,思...