全wa,求解答
查看原帖
全wa,求解答
934810
1737923221dayang楼主2023/9/19 17:29
#include<bits/stdc++.h>
using namespace std;

int n,m,v[1010];
long long f[10][1010][82];
bool b[1010];

int main(){
    cin>>n>>m;
    for(int i=0;i<1<<n;i++){
        for(int j=i;j;j=(j-1)&j) v[i]++;

        b[i]=(i&(i<<1)==0);
    }

    memset(f,0,sizeof(f));
    f[0][0][0]=1;
    for(int i=1;i<=n;i++){
        for(int j=0;j<1<<n;j++){
            for(int k=0;k<=n*n;k++){
                if(f[i-1][j][k]){
                    for(int l=0;l<1<<n;l++){
                        if(((l&j)==0)&&(((l>>1)&j)==0)&&(((l<<1)&j)==0)&&b[l]){
                            f[i][l][k+v[l]]+=f[i-1][j][k];
                        }
                    }
                }
            }
        }
    }
    long long rel=0;
    for(int i=0;i<i<<n;i++){
        rel+=f[n][i][m];
    }
    cout<<rel;
    return 0;

}
2023/9/19 17:29
加载中...