将一百元大钞换等值的10元5元2元1元的笑票,要求换成40张,每种至少一张,编程所有的

如题所述

第1个回答  2011-03-21

#include "stdafx.h"

#include<iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

 for(int i=1;i<7;i++)

  for(int j=1;j<24;j++)

   for(int k=1;k<50;k++)

    for(int n=1;n<100;n++)

    {

     if(i*10+j*5+k*2+n-100) continue;

     if(i+j+k+n-40) continue;

     cout<<i<<"张十元的;"<<j<<"张五元的;"<<k<<"张两元的;"<<n<<"一元的;"<<endl;

    }

 return 0;

}

本回答被网友采纳
第2个回答  2011-03-21
其实是个40张求和为100的问题,首先有4张票子是固定的了,共计18元。剩余82元和36张进行分配。即10x+5y+2z+w = 82,x+y+z+w = 36,x,y,z,w ∈Z的解方程题。

提示到此为止。请加油

简单办法正整数遍历,xyzw进行各级嵌套进行36^4时间复杂度的运算可以求出所有解,对电脑也是一瞬间的东西。

正规做法是使用不定方程的解法,详细请见参考资料。

参考资料:http://baike.baidu.com/view/375208.htm

相似回答