捞霸王猴样例WA球条

P1219 [USACO1.5] 八皇后 Checker Challenge

IaLWH @ 2024-08-09 11:28:33

#include<cstdio>
#define xrr x+j*dx[i]
#define yrr y+j*dy[i]
int n;
const int dx[8]={0,1,1,1,0,-1,-1,-1},dy[8]={1,1,0,-1,-1,-1,0,1};
int v[20][20];

int dfs(int x,int y){
    int ans=0;
    v[x][y]++;
    for(int i=0;i<8;i++)
        for(int j=1;xrr>=0&&xrr<n&&yrr>=0&&yrr<n;j++)
            v[xrr][yrr]++;

    for(int i=0;i<n;i++){
        if(x+1>=n)return 1;
        if(v[x+1][i])continue;
        ans+=dfs(x+1,i);
    }
    v[x][y]--;
    for(int i=0;i<8;i++)
        for(int j=1;xrr>=0&&xrr<n&&yrr>=0&&yrr<n;j++)
            v[xrr][yrr]--;
    return ans;
}
int main(){
    int n,ans=0;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        ans+=dfs(0,i);
    printf("%d",ans);
    return 0;
}

只打算输出解的总数,然后样例没过


|