为什么RE?

P1219 [USACO1.5] 八皇后 Checker Challenge

_awa_keyai @ 2023-05-13 13:57:21

#include<bits/stdc++.h>

using namespace std;
int a[100],b[100],c[100],d[100];
int total;
int n;
int print(){
    if(total<=2){
        for(int k=1;k<=n;k++){
            cout<<a[k]<<" ";
        }
        cout<<endl;
    }
    total++;
}

void dfs(int i){
    if(i>n){
        print();
        return;
    } else {
        for(int j=1;j<=n;j++){
            if((!b[j])&&(!c[i+j])&&(!d[i-j+n])){
                a[i]=j;
                b[j]=1;
                c[i+j]=1;
                d[i-j+n]=1;
                dfs(i+1);
                b[j]=0;
                c[i+j]=0;
                d[i-j+n]=0;
            }
        }
    }
}

signed main(void){

    cin>>n;
    dfs(1);
    cout<<total<<endl;

    return 0;
}

by zjhzs666 @ 2023-05-13 14:18:53

@_awa_keyai

额......你的dfs函数内满足输出条件后的 return ; 没有打空格


by zjhzs666 @ 2023-05-13 14:20:08

@_awa_keyai 应该是return ;而不是return;


by _awa_keyai @ 2023-05-13 16:12:23

@zjhzs666 这两个有什么区别呢?


by _awa_keyai @ 2023-05-13 16:13:02

就是说为什么要加空格


by zjhzs666 @ 2023-05-13 16:20:35

@_awa_keyai

因为return后面应该加一个返回值,例如return 0,为了避免返回值与return相连而该变return的作用,因此需要打空格,而在void函数内的return虽然没有返回值,但也需要打空格进行区分。


|