现在做一个网站大概多少钱,抚顺网站建设费用,网站开发国内外现状研究,风险网站怎么解决方案1.用dfs解决#xff0c;首先这题的方格图形就很像一个走迷宫的类型#xff0c;迷宫想到dfs#xff0c;最中心点视为起点#xff0c;起点有两个小人在这个方格里面对称行动#xff0c;直到走出迷宫#xff08;一个人走出来了另一个人就也走出来了#xff0c;而走过的点会…1.用dfs解决首先这题的方格图形就很像一个走迷宫的类型迷宫想到dfs最中心点视为起点起点有两个小人在这个方格里面对称行动直到走出迷宫一个人走出来了另一个人就也走出来了而走过的点会被标记所以一个人不用担心走到另一个人的路线上因此只用研究一个人走迷宫问题即可。如示 2.走迷宫就要考虑坐标问题dx,dy分别表示横纵坐标的变化量画图比较好看走上下左右的变化量是什么 3.代码如下
很贴dfs模板dfs里面先if判断“输出”或者结果的答案for循环在一个位置上可能的四个方向的选择for内部if判断这个选择行不行行的话标记已选择向前走一步即dfs再次退回到这个位置的时候再把这个选择抹掉。只不过多了坐标的变化因为都是处于x,y位置上试探性往一个方向走不管这个方向可不可以最终我都会退回到这个位置上再去判断这个位置上的另外三种可能性所以判断完if肯定还是要退回来的if只是一个试探。因为从中心3,3开始所以一开始是dfs(3,3),记得把此点设置已走过再开始dfs.关于对称点的坐标变化可以看见横纵坐标加起来和都是6发现这个小规律可以写的不复杂一些。 #includeiostream
using namespace std;int dx[] { 0,-1,1,0,0 };
int dy[] { 0,0,0,-1,1 };
bool vis[10][10];
int cnt 0;
void dfs(int x, int y)
{if (x 0 || y 0 || x 6 || y 6) {cnt;return;}for (int i 1; i 4; i) {x dx[i];y dy[i];if (!vis[x][y]) {vis[x][y] 1;vis[6 - x][6 - y] 1;dfs(x, y);vis[6 - x][6 - y] 0;vis[x][y] 0;}x - dx[i];y - dy[i];}
}
int main() {vis[3][3] 1;dfs(3, 3);cout cnt / 4 endl;return 0;
}