简单石子合并

求N对石子可以合并出的所有质量
#include  < string >
#include 
< iostream >
#include 
< fstream >

using   namespace  std;

ifstream 
in ( " in.txt " );
ofstream 
out ( " out.txt " );
int  i_count;
#define  max 1000 // 最多堆数 
int  i,j,sum;
int  num[max - 1 ];
bool  f[max - 1 ]; // f[i]表示i重可否取到 
void  work1(); // 求出合并所有可能得到的重量 
int  main()
{
sum
=0;
in >> i_count;
for (i=0;i<i_count;i++)
{
in >> num[i];
sum
+=num[i];
}
//end for 
work1();
system (
"pause");

}


void  work1()
{
f[
0]=true;
for(j=0;j<i_count;j++)
{
for(i=sum-num[j];i>=0;--i)
{
f[i
+num[j]]=true;
}
//end for i

}
//end for j
for (i=0;i<=sum;++i)
{
if (f[i]==trueout << i<< endl;
}
//end for
return;
}

你可能感兴趣的:(简单石子合并)