问题:
现有1000个苹果,10个盒子,问各个盒子内应该分别放入多少个苹果,才能使得用户要买任意1至1000之间的一个苹果数,都可以给他(卖的时候是整个盒子卖,不能拆盒子的包装)。
解决方法:
上面这个程序的思想是基于这样的:数组的前m个元素能够处理前m个元素相加后的结果nTotalAppleNum(当成是总的苹果数)放在m个盒子里使得用户买任意1个到nTotalAppleNum个苹果都可以给买主还不用拆开盒子!!
现有1000个苹果,10个盒子,问各个盒子内应该分别放入多少个苹果,才能使得用户要买任意1至1000之间的一个苹果数,都可以给他(卖的时候是整个盒子卖,不能拆盒子的包装)。
解决方法:
#define APPLENUM 1000
#define BOXNUM 10
void main()
{
int arBox[BOXNUM];
int m = 0;
int nTotalAppleNum = 0;
arBox[0] = 1;
arBox[1] = 2
nTotalAppleNum = arBox[0];
for(m = 2 ; m < BOXNUM ; m++)
{
nTotalAppleNum += arBox[m-1];
if((nTotalAppleNum * 2) > APPLENUM)
arBox[m] = APPLENUM - nTotalAppleNum;
else
arBox[m] = nTotalAppleNum + 1;
}
//相关处理
}
#define BOXNUM 10
void main()
{
int arBox[BOXNUM];
int m = 0;
int nTotalAppleNum = 0;
arBox[0] = 1;
arBox[1] = 2
nTotalAppleNum = arBox[0];
for(m = 2 ; m < BOXNUM ; m++)
{
nTotalAppleNum += arBox[m-1];
if((nTotalAppleNum * 2) > APPLENUM)
arBox[m] = APPLENUM - nTotalAppleNum;
else
arBox[m] = nTotalAppleNum + 1;
}
//相关处理
}
上面这个程序的思想是基于这样的:数组的前m个元素能够处理前m个元素相加后的结果nTotalAppleNum(当成是总的苹果数)放在m个盒子里使得用户买任意1个到nTotalAppleNum个苹果都可以给买主还不用拆开盒子!!