保证代码能够运行并达到理想效果,求点赞关注!
#include <bits/stdc++.h>
#include <windows.h>
#include <conio.h>
using namespace std;
int a[30][30],dp[30][30];
int flag[30][30];
int dx[9]= {-1,-1,-1,0,0,1,1,1};
int dy[9]= {-1,0,1,-1,1,-1,0,1};
int rx[9]= {-2,-2,-1,1,2,2,1,-1};
int ry[9]= {-1,1,2,2,1,-1,-2,-2};
int step,check;
void checksit(int n,int m) {
for(int i=0; i<8; i++) {
int num=0;
for(int j=1; j<5; j++) {
if(a[n+j*dx[i]][m+j*dy[i]]==1) num++;
if(a[n+j*dx[i]][m+j*dy[i]]==2) break;
}
for(int j=1; j<5; j++) {
if(a[n-j*dx[i]][m-j*dy[i]]==1) num++;
if(a[n-j*dx[i]][m-j*dy[i]]==2) break;
}
if(num==4) {
dp[n][m]+=1000;
flag[n][m]==3;
}
if(num==3&&a[n+4*dx[i]][m+4*dy[i]]==2) dp[n][m]+=10;
if(num==3&&a[n+4*dx[i]][m+4*dy[i]]==0) {
dp[n][m]+=500;
flag[n][m]==1;
}
if(num==2&&a[n+3*dx[i]][m+3*dy[i]]==2) dp[n][m]+=1;
if(num==2&&a[n+3*dx[i]][m+3*dy[i]]==0) dp[n][m]+=3;
}
for(int i=0; i<8; i++) {
int num=0;
for(int j=1; j<5; j++) {
if(a[n+j*dx[i]][m+j*dy[i]]==2) num++;
else break;
}
for(int j=1; j<5; j++) {
if(a[n-j*dx[i]][m-j*dy[i]]==2) num++;
else break;
}
if(num==4) {
dp[n][m]+=1000;
flag[n][m]==2;
}
if(num==3&&a[n+4*dx[i]][m+4*dy[i]]==1) dp[n][m]+=20;
if(num==3&&a[n+4*dx[i]][m+4*dy[i]]==0) {
dp[n][m]+=500;
flag[n][m]==2;
}
if(num==2&&a[n+3*dx[i]][m+3*dy[i]]==1) dp[n][m]+=2;
if(num==2&&a[n+3*dx[i]][m+3*dy[i]]==0) dp[n][m]+=10;
}
for(int i=0; i<8; i++) {
for(int j=0; j<8; j++) {
if(j==i) continue;
int num=0;
for(int k=1; k<3; k++) {
if(a[n+k*dx[j]][m+k*dy[j]]==1) num++;
if(a[n+k*dx[i]][m+k*dy[i]]==2) {
num-=2;
break;