摘要:
很简单。失误的是刚开始用DFS,超时了。#include<iostream>#include<queue>using namespace std;const int N=35;struct node{ int l,r,c,step; node(int a1=0,int a2=0,int a3=0,int ste=0) {l=a1;r=a2;c=a3;step=ste;}};int mov[6][3]={{-1,0,0},{1,0,0},{0,-1,0},{0,1,0},{0,0,-1},{0,0,1}};char maze[N][N][N];bool visit[N][
阅读全文
摘要:
这题让我真正理解了回溯,之前自己写的代码一直写不好,对回溯理解不好。dfs(y+1,step);这个代码一下子就解决了回溯的问题。还是太菜了。还有一点就是,之前的DFS都是上下左右的移动,这次刚开始做不好就是没理解透。其实这次的以行为节点,然后以列为上下左右去移动。这样写出来的代码才会精炼合理。#include<iostream>using namespace std;const int N=10;int maze[N][N];int n,k;int ans;bool visit[N];void dfs(int y,int step){ if(step==k) { ans++; r
阅读全文
摘要:
DFS的简单应用。#include<iostream>using namespace std;const int N=25;int movex[4]={0,0,-1,1};int movey[4]={-1,1,0,0};int maze[N][N]; int nx,ny;struct node{ int x,y; node(int _x=0,int _y=0){x=_x;y=_y;}};node start;node getnext(node now,int dire){ int x=now.x; int y=now.y; if(maze[y+movey[dire]][x+move
阅读全文