为什么用bool型存储当前节点与相邻节点是否走过就不行,用int型++,--就可以?
可能描述的有点苍白……
这样是可以的
int vis[15][15];
if(vis[x][y]==0)
{
for (int i=0;i<8;i++)
{
vis[x+offsetx[i]][y+offsety[i]]++;
}
num+=a[x][y];
dfs(x,y+1);
num-=a[x][y];
for (int i=0;i<8;i++)
{
vis[x+offsetx[i]][y+offsety[i]]-=1;
}
}
这样是不行的
bool vis[15][15];
if(vis[x][y]==0)
{
for (int i=0;i<8;i++)
{
vis[x+offsetx[i]][y+offsety[i]]=1;
}
num+=a[x][y];
dfs(x,y+1);
num-=a[x][y];
for (int i=0;i<8;i++)
{
vis[x+offsetx[i]][y+offsety[i]]=0;
}
}