一列数分两组,使其和的差最小
每次都问大家问题这次贴个我调试好的 呵呵
#include <iostream.h>
#include <math.h>
int t=0;
int minus=1000;
const int n=5;
int a[n]={15,14,11,10,8};
int x[n]={0};
void Disp()
{
int sleft=0,sright=0;
for(int i=0;i<n;i++)
{
if(x[i]==0)
sleft+=a[i];
else if(x[i]==1)
sright+=a[i];
}
int temp=abs(sleft-sright);
if(temp<minus)
{
minus=temp;
cout<<"The smallest [color=#ff0000]minus is:"[/color];
cout<<minus<<endl;
for(int i=0;i<n;i++)
cout<<x[i]<<"\t";
cout<<endl;
}
}
void BackT(int t)
{
if(t>=n)
Disp();
else
for(int j=0;j<2;j++)
{
x[t]=j;
BackT(t+1);
}
}
int main(int argc,int *argv)
{
BackT(t);
return 0;
}
感觉每次都要计算,没加约束条件
以后再优化吧
高手也可以帮忙优化下啊,谢了