简单石子合并

来源:互联网 发布:电子合成器软件 编辑:程序博客网 时间:2024/05/16 01:54
求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;
}
原创粉丝点击