题意:经过所有格子,并且不能进行交叉,走的下一个格子必须是当前格子值+1%k,输出路径最小的那一条(有8个方向,一会粘图)
思路:按照8个方向设置偏移量进行dfs,第一个到达终点的即为最小路径,直接输出即可
代码:
#inClude using NAMEspace std; #define N 12 int n,k; int g[N][N]; int x[]={-1,-1,0,1,1,1,0,-1}; int y[]={0,1,1,1,0,-1,-1,-1}; bool f,vis[N][N]; vector path; void dfs(int u,int v,int st){ if(f)return; if(u==n&&v==n&&st==n*n-1){ for(auto it:path)cout