苹果分堆

来源:互联网 发布:中国mysql用户组 编辑:程序博客网 时间:2024/05/29 21:31

有29个苹果,请将它们分成5堆,通过5堆可以组成1到29中的任意数,例如若有一堆个数为1,有一堆个数为4,则这两堆苹果可组成1,4;5三个数。

//用a,b,c,d,e分别表示第1堆到第5堆的个数。
//显然一定有一堆苹果为1
//显然一琮有一堆苹果为2
//本题属加法问题,故可设a<b<c<d<e
#include<iostream.h>
void main(){
 int a,b,c,d,e,aa,bb,cc,dd,ee,s,k,r[30];
 a=1;
 b=2;
 for(c=3;c<=27;c++)
  for(d=c+1;d<=28;d++)
  {
   e=29-a-b-c-d;
   if(e>d){
    for(aa=0;aa<=a;aa+=a)
     for(bb=0;bb<=b;bb+=b)
      for(cc=0;cc<=c;cc+=c)
       for(dd=0;dd<=d;dd+=d)
        for(ee=0;ee<=e;ee+=e)
        {
         s=aa+bb+cc+dd+ee;
         r[s]=s;
        }
        k=1;
        for(int i=1;i<=29;i++)
         if(r[i]!=i)
          k=0;
         if(k==1)
          cout<<a<<"  "<<b<<" "<<c<<" "<<d<<" "<<e<<endl;
         for(i=1;i<=29;i++)
          r[i]=0;
   }
  }
}

0 0
原创粉丝点击