所以这题怎么做
查看原帖
所以这题怎么做
437243
cly312楼主2024/8/26 13:54

RT,下面的代码只能通过sub0

#include<bits/stdc++.h>
using namespace std;
int n,sum,a[10],w[20501],f[20501],ok=1,ans;
int main(){
	while(ok){
		ok=0;
		n=sum=0;
		for(int i=1;i<7;i++){
			cin>>a[i];
			if(a[i]) ok=1;
			sum+=a[i]*i;
			for(int j=1;j<=a[i];j<<=1) w[++n]=j*i,a[i]-=j;
			w[++n]=a[i]*i;
		}
		if(!ok)break;
		if(sum&1){
			cout<<"Can't\n";
			continue;
		}
		memset(f,0,sizeof(f));
		f[0]=1;
		for(int i=1;i<=n;i++){
			for(int j=sum>>1;j>=w[i];j--) if(f[j-w[i]]) f[j]=1;
			if(f[sum>>1]){
				ans=1;
				break;
			}
		}
		if(ans)cout<<"Can\n";
		else cout<<"Can't\n";
	}
	return 0;
}
2024/8/26 13:54
加载中...