求个计算有关问题的算法
求个计算问题的算法
给个总数A,要在几个数里找出是否累加成A 如果能,则输出这几个数,不能的话就输出0.
如: 总数A =200 几个数为: 5,100,195,10 结果就是输出 5 100 195
总数A =190 几个数为: 5,100,195,10 结果就是输出 0
几个数 是一个不固定的数组,可能五个,也可以六个
多谢了,计算能力差,请教了
------解决方案--------------------
是否允许数字重复?
比如 5,100,195,10 A =200 输出 100, 100。
如果是不重复,参考
http://bbs.****.net/topics/380259947
组合后求和,看有没有符合的。
------解决方案--------------------

给个总数A,要在几个数里找出是否累加成A 如果能,则输出这几个数,不能的话就输出0.
如: 总数A =200 几个数为: 5,100,195,10 结果就是输出 5 100 195
总数A =190 几个数为: 5,100,195,10 结果就是输出 0
几个数 是一个不固定的数组,可能五个,也可以六个
多谢了,计算能力差,请教了
算法
------解决方案--------------------
是否允许数字重复?
比如 5,100,195,10 A =200 输出 100, 100。
如果是不重复,参考
http://bbs.****.net/topics/380259947
组合后求和,看有没有符合的。
------解决方案--------------------
static class Program
{
[STAThread]
static void Main()
{
Ar(new int[] { 5, 100, 195, 10 }, 200);
}
//先列出递归原理
//static void Ar(int[] ar, int g)
//{
// int size = ar.Length;
// for (int x = 0; x < size; x++)
// {
// for (int y = x + 1; y < size; y++)
// {
// for (int z = y + 1; z < size; z++)
// {
// if (x + y + z == g)
// return true;
// else if (x + y + z > g)//结束
// break;
// //for (int a = z + 1; a < size; a++)
// //...
// }