
现有nx个x,ny个y,nz个z,nw个w,将这若干个非负整数分别置于A数组中或B数组中。
规则是:所有x必须放入A数组,所有y必须放入B数组,z和w可以放入A数组也可以放入B数组。
SA为A数组的和,SB为B数组的和,S为SA和SB的较大者。
当x,y,z,w和nx,ny,nz,nw确定后,如何放置,可以使得S最小,并求出这个S值。
其中 0<=x,y,z,w<=10000000,nx,ny,nz,nw<=10000000。
如:x,y,z,w,nx,ny,nz,nw分别为:10 1 10 10 100 1 3 5。
S为1000。
直接上代码:
using namespace std;
#include
#define MAX 10000000
int main()
{
int x,y,z,w,nx,ny,nz,nw;
cout<<"Please Enter Data:"<>x;
cout<<"y:";
cin>>y;
cout<<"z:";
cin>>z;
cout<<"w:";
cin>>w;
cout<<"nx:";
cin>>nx;
cout<<"ny:";
cin>>ny;
cout<<"nz:";
cin>>nz;
cout<<"nw:";
cin>>nw;
int *A=new int[MAX];
int *B=new int[MAX];
int i,sumA=0,sumB=0,S;
for(i=0;isumB)
{
B[k++]=z;
sumB+=z;
}
else
{
A[j++]=z;
sumA+=z;
}
}
for(i=0;isumB)
{
B[k++]=w;
sumB+=w;
}
else
{
A[j++]=w;
sumA+=w;
}
}
sumA>sumB?S=sumA:S=sumB;
cout<
小结:
对w的 *** 作和对z的 *** 作基本类似,可以考虑合并在一步进行 *** 作。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)