dfs(x, y, _ans, _sum)
朝四個方向遞迴然後不行就回溯
下面是兩份**,最下面那份帶了注釋,自行**
#include
using
namespace std;
const
int maxn =
1e3+5;
const
int inf =
1e5;
int arr[maxn]
[maxn]
;int row, cal;
int ans = inf, sum =0;
bool vis[maxn]
[maxn]
;// void dfs(int x, int y, int _sum, int _ans)
// // /*
// 能夠到這一步的都是_ans <= ans
// 此時_sum == sum 直接替換一下ans
// 然後回溯就可以啦
// */
// if (_sum == sum)
// dfs(x - 1, y, _sum, _ans), dfs(x, y - 1, _sum, _ans);
// dfs(x + 1, y, _sum, _ans), dfs(x, y+1, _sum, _ans);
// vis[x][y] = false;
// }
void
dfs(
int x,
int y,
int _ans,
int _sum)
if(_sum == sum)
dfs(x -
1, y, _ans, _sum)
;dfs
(x, y -
1, _ans, _sum)
;dfs
(x +
1, y, _ans, _sum)
;dfs
(x, y +
1, _ans, _sum)
; vis[x]
[y]=
false;}
intmain()
} cout <<
"["<< sum <<
"]"<< endl;
if(sum %2==
1)cout <<
0<< endl;
else
system
("pause");
return0;
}// #include
// using namespace std;
// const int inf = 1 << 30;
// int sum = 0;
// int m, n, a[15][15], ans;
// bool vis[15][15];
// void dfs(int x, int y, int _sum, int _ans)
// // /*
// 能夠到這一步的都是_ans <= ans
// 此時_sum == sum 直接替換一下ans
// 然後回溯就可以啦
// */
// if (_sum == sum)
// dfs(x - 1, y, _sum, _ans), dfs(x, y - 1, _sum, _ans);
// dfs(x + 1, y, _sum, _ans), dfs(x, y+1, _sum, _ans);
// vis[x][y] = false;
// }
// int main()
// // if (sum % 2 == 1)
//
// else
//
// return 0;
// }
歷屆試題 剪格仔
歷屆試題 剪格仔 時間限制 1.0s 記憶體限制 256.0mb 問題描述 如下圖所示,3 x 3 的格仔中填寫了一些整數。10 1 52 20 30 1 1 2 3 我們沿著圖中的星號線剪開,得到兩個部分,每個部分的數字和都是60。本題的要求就是請你程式設計判定 對給定的m x n 的格仔中的整數...
歷屆試題 剪格仔
藍橋杯 2014 02 13 17 08 50人閱讀收藏 舉報歷屆試題 剪格仔 時間限制 1.0s 記憶體限制 256.0mb 問題描述 如下圖所示,3 x 3 的格仔中填寫了一些整數。10 1 52 20 30 1 1 2 3 我們沿著圖中的星號線剪開,得到兩個部分,每個部分的數字和都是60。本題...
歷屆試題 剪格仔
歷屆試題 剪格仔 時間限制 1.0s 記憶體限制 256.0mb 問題描述 如下圖所示,3 x 3 的格仔中填寫了一些整數。10 1 52 20 30 1 1 2 3 我們沿著圖中的星號線剪開,得到兩個部分,每個部分的數字和都是60。本題的要求就是請你程式設計判定 對給定的m x n 的格仔中的整數...