萌新代码建了两次边,为删去重边,只取了一半的移动方向,然而20pts
int dx[8]={2,1,2,-1,1,-2,-1,-2},dy[8]={1,2,-1,2,-2,1,-2,-1}
for(int i=0;i<8;i++){
int nowx=x+dx[i],nowy=y+dy[i];
if(!a[nowx][nowy]&&nowx>=1&&nowx<=n&&nowy>=1&&nowy<=n){
add(num[x][y],num[nowx][nowy]+n*n,1);
}
}
如果取全部方向,在末尾输出时将 ans/2 就能AC,求大佬解答
printf("%lld\n",s-(ans>>1));