洛谷P1123取數遊戲題解

2022-03-17 19:40:59 字數 777 閱讀 6111

題目

這是一道簡單的搜尋題,考查的還是比較基礎的東西,其時搜尋有時候並不難寫,主要是要想到怎麼搜。比如這個題,如果想二維四個方向搜則沒有頭緒,反之因為搜尋是用遞迴實現的,所以我們可以使用遞迴的特性,把大問題處理成小問題來解決。

所以我們可以用處理每一行的形式,把這一行的最大值求出來,再接著向下一行搜,中途再加上回溯操作,這道搜尋就做完了。

\(code\)

#include #include #include c

#include using namespace std;

int t, n, m, data[10][10], vis[10][10], maxn, deep;

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

int nexy = y + 1, nex = x;

if (nexy > m)

if (!vis[x][y] && !vis[x + 1][y] && !vis[x + 1][y - 1] && !vis[x + 1][y - 1] && !vis[x + 1][y + 1] && !vis[x][y - 1] && !vis[x - 1][y + 1] && !vis[x][y + 1] && !vis[x - 1][y] && !vis[x - 1][y - 1])

dfs(nex, nexy, now);

}int main() }/*

13 3

1 1 1

1 99 1

1 1 1

*/

洛谷 p1123取數遊戲

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

洛谷 P1123 取數遊戲

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

洛谷 P1123 取數遊戲

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