这道题研究两天了也没什么头绪,希望高手指点一下。描述
 
小P有若干个正方形积木,它想把这些积木组成一个更大的正方形,问能否成功?
 
关于输入 第一行是一个正整数c,表示数据的组数。 
接下来是c组数据,每组数据一行。 
每组数据的第一个整数为s,表示要组成的正方形的边长.接下来是n(1<=n<=16),表示积木的个数,接下来n个数表示这些积木的边长。
 
关于输出 对每组数据输出一行"yes"或"no",表示能否用全部积木拼成一个正方形.
 
例子输入
 
2
4 8 1 1 1 1 1 3 1 1
5 6 3 3 2 1 1 1
 
例子输出 yes
no
 
我查阅过以前的帖子有类似的问题,找着它的思路写了一下代码,怎奈能力有限,怎么都编不对,希望高手给予指点!!!

解决方案 »

  1.   

    感觉是ACM的题不知道楼主是哪个学校的。。
      

  2.   

    我覺得所有的小积木的體積和等於大积木的體積就說明能堆成bool IsOk(int a[]){
    double Vsum=0;
    for(int i=0;i<n;i++)
    {
       Vsum +=(a[i]*a[i]*a[i]);
    }
    if(s*s*s==Vsum)return true;
    else return false;
    }
      

  3.   

    题目没描述清楚吧,4 8 1 1 1 1 1 3 1 1 目的正方体体积为4*4*4=64
    而小正方体体积和为1+1+1+1+1+3*3*3+1+1=34
    这种情况下输出yes?