洛谷 P1123 取數遊戲

2022-03-20 06:09:47 字數 1049 閱讀 7226

洛谷傳送門

乙個n \times mn×m的由非負整數構成的數字矩陣,你需要在其中取出若干個數字,使得取出的任意兩個數字不相鄰(若乙個數字在另外乙個數字相鄰88個格仔中的乙個即認為這兩個數字相鄰),求取出數字和最大是多少。

第1行有乙個正整數tt,表示了有tt組資料。

對於每一組資料,第一行有兩個正整數nn和mm,表示了數字矩陣為nn行mm列。

接下來nn行,每行mm個非負整數,描述了這個數字矩陣。

tt行,每行乙個非負整數,輸出所求得的答案。

輸入 #1複製

輸出 #1複製

對於第1組資料,取數方式如下:

[67] 75 63 10

29 29 [92] 14

[21] 68 71 56

8 67 [91] 25

對於20%20%的資料,n, m≤3n,m≤3;

對於40%40%的資料,n,m≤4n,m≤4;

對於60%60%的資料,n, m≤5n,m≤5;

對於100%100%的資料,n, m≤6,t≤20n,m≤6,t≤20。

一道搜尋題。

這題我用的是地圖遍歷題的第二種深搜處理方法。

簡單地講一下,就是一行一行搜,一行搜完了就下一行搜,每到乙個點列舉8個方向,如果都合法就進行深搜,否則就不搜。這裡要注意,我們一開始的深搜入口是1,1,但是我們不知道最優方案可不可以取這個1,1的點的權值,所以我們還需要繼續搜一遍不取1,1的情況。這樣就可以過了。

**:

#include#include#includeusing namespace std;

int n,m,ans,map[10][10];

bool v[10][10];

bool check(int x,int y)

void dfs(int x,int y,int z)

if(check(xx,yy))

dfs(xx,yy,z);

}int main()

return 0;

}

洛谷 p1123取數遊戲

定義乙個dfs函式,函式有三個變數,分別是i,j,sum。i,j分別代表訪問的這個點的座標,sum表示這條路徑上的數字的和。思路是 從 1,1 這個點進入,依次以先列數增加,然後行數增加在訪問所有的點。如下 include include include using namespace std in...

洛谷 P1123 取數遊戲

乙個n m的由非負整數構成的數字矩陣,你需要在其中取出若干個數字,使得取出的任意兩個數字不相鄰 若乙個數字在另外乙個數字相鄰8個格仔中的乙個即認為這兩個數字相鄰 求取出數字和最大是多少。輸入格式 輸入第1行有乙個正整數t,表示了有t組資料。對於每一組資料,第1行有兩個正整數n和m,表示了數字矩陣為n...

P1123 取數遊戲(洛谷)

乙個n m的由非負整數構成的數字矩陣,你需要在其中取出若干個數字,使得取出的任意兩個數字不相鄰 若乙個數字在另外乙個數字相鄰8個格仔中的乙個即認為這兩個數字相鄰 求取出數字和最大是多少。第1行有乙個正整數t,表示了有t組資料。對於每一組資料,第一行有兩個正整數n和m,表示了數字矩陣為n行m列。接下來...