寡人求助
查看原帖
寡人求助
384007
封禁用户楼主2021/12/23 09:02

寡人被本题卡了2天,不知诸位爱卿谁可帮朕调调?(大雾大雾,btd吸引人最好用了

无法通过样例,求助,thx

#include<iostream>
using namespace std;
inline int get(int x){
	int num;
	for(num=0;x!=0;num++)x&=(x-1);
	return num;
}
long long dp[10][600][100],ans,n,kk;
int main(){
	cin>>n>>kk;
	for(int i=0;i<=(1<<n);i++)if((i&(i<<1))==0)dp[1][i][get(i)]=1;
	for(int i=2;i<=n;i++){
		for(int j=0;j<=(1<<n);j++){
			if((j&(j<<1))!=0)continue;
			for(int k=0;k<=(1<<n);k++){
				if((k&(k<<1))!=0)continue;
				if((k&j)!=0)continue;
				if((k&(j<<1))!=0)continue;
				if(((k<<1)&j)!=0)continue;
				for(int num=kk;num>=get(k);num--){
					dp[i][k][num]+=dp[i-1][j][num-get(k)];
				}
			}
		}
	}
	for(int i=0;i<=(1<<n);i++)if((i&(i<<1))==0)ans+=dp[n][i][kk];
	cout<<ans;
}
2021/12/23 09:02
加载中...