hdu 1690 The Balance_母函数

来源:互联网 发布:轻松玩转scratch编程 编辑:程序博客网 时间:2024/06/05 14:10

题意:给你n个数,这些数可以互相加或者减,输出在范围【1,sum】里不能通过运算得出的数

思路:套母函数模版 

#include <iostream>#include<cstdio>using namespace std;#define N 110int a[N],c1[10010],c2[10010],v[10010]; int main(int argc, char** argv) {int n,sum,i,j,k,ans;while(scanf("%d",&n)!=EOF){sum=0;ans=0;for(i=0;i<n;i++){scanf("%d",&a[i]);sum+=a[i];}for(i=0;i<=sum;i++){c1[i]=0;c2[i]=0;}for(i=0;i<=a[0];i+=a[0])c1[i]=1;for(i=1;i<n;i++){for(j=0;j<=sum;j++){for(k=0;k+j<=sum&&k<=a[i];k+=a[i]){if(k>=j)c2[k-j]+=c1[j];elsec2[j-k]+=c1[j];c2[j+k]+=c1[j];}}for(j=0;j<=sum;j++){c1[j]=c2[j];c2[j]=0;}}for(i=1;i<=sum;i++)if(!c1[i])v[ans++]=i;printf("%d\n",ans);if(ans){for(i=0;i<ans-1;i++)printf("%d ",v[i]);printf("%d\n",v[i]);}}return 0;}


0 0
原创粉丝点击