链接:
2596. 检查骑士巡视方案
题意
骑士走日字,就是absx=2 absy=1
或absx=1 absy=2
解:
一共就那么点格子,暴力搜八个方向也行
先用数组存每一步对应的位置,然后判断相邻两个位置是否符合日字
我直接用absx+absy==3
就过了,大概是不存在一个有单方向走三格的案例或不存在这样的案例??
实际代码:
#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
中的所有整数 互不相同