成年人,最重要的就是情绪稳定。
(喂喂喂,这不是你写简单题的借口欸。
DFS
全局变量中不可以用
vector<vector<bool>> visited(100,vector<bool>(100,false));
在leetcode中bool visited[101][101]={false};
全局并赋初值可以
在codeblocks中
全局bool visited[101][101]+memset(visited,false,sizeof(visited));
可,memset
头文件为string.h
局部变量bool visited[101][101]={false};
也可以
class Solution {
public:
bool visited[101][101]={false};
int movingCount(int m, int n, int k) {
return dfs(0,0,m,n,k);
}
int dfs(int x, int y,int m, int n, int k){
if((x/10+x%10)+(y/10+y%10)>k||visited[x][y]||x>=m||y>=n)
return 0;
visited[x][y]=true;
return 1+dfs(x,y+1,m,n,k)+dfs(x+1,y,m,n,k);
}
};
BFS
class Solution {
public:
int cal(int x)
{
return x%10+x/10;
}
int movingCount(int m, int n, int k) {
vector<vector<bool>> visited(m,vector<bool>(n,false));
queue<pair<int,int>>que;
que.push({0,0});
visited[0][0]=true;
int cnt=0;
while(!que.empty())
{
int size=que.size();
for(int i=0;i<size;i++)
{
int x=que.front().first;
int y=que.front().second;
que.pop();
cnt++;
if(x+1<m&&visited[x+1][y]==false&&cal(x+1)+cal(y)<=k)
{
visited[x+1][y]=true;
que.push({x+1,y});
}
if(y+1<n&&visited[x][y+1]==false&&cal(x)+cal(y+1)<=k)
{
visited[x][y+1]=true;
que.push({x,y+1});
}
}
}
return cnt;
}
};