链接:
题意
骑士走日字,就是absx=2 absy=1
或absx=1 absy=2
解:
一共就那么点格子,暴力搜八个方向也行
先用数组存每一步对应的位置,然后判断相邻两个位置是否符合日字
我直接用absx+absy==3
就过了,大概是不存在一个有单方向走三格 的案例或不存在这样的案例??
实际代码:
c++
#include<bits/stdc++.h>
using namespace std;
bool checkValidGrid(vector<vector<int>>& grid)
{
if(grid[0][0]!=0) return false;
typedef pair<int,int> PII;
int lg=grid.size();
vector<PII>Path(lg*lg+7);
for(int i=0;i<lg;i++)
{
for(int j=0;j<lg;j++)
{
Path[grid[i][j]].first=i;
Path[grid[i][j]].second=j;
}
}
for(int i=0;i<lg*lg-1;i++)
{
int absx=abs(Path[i].first-Path[i+1].first);
int absy=abs(Path[i].second-Path[i+1].second);
//if(absx>=3||absy>=3) return false;
if(absx+absy==3) continue;
return false;
}
return true;
}
限制:
n == grid.length == grid[i].length
3 <= n <= 7
0 <= grid[row][col] < n * n
grid
中的所有整数 互不相同