黑马程序员技术交流社区

标题: 写一个函数,在一个数组中找出随意几个值相加等于一个数 [打印本页]

作者: 卢京    时间: 2012-9-21 18:47
标题: 写一个函数,在一个数组中找出随意几个值相加等于一个数
比如:数组{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}   
要找出,哪些数相加等于20。并输出组合的结果  注意:不一定是2个数,可以是多个数,只要相加等于20

作者: 潘梦军    时间: 2012-9-22 18:04
int[] num = new int[19] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
            List<int> lists = new List<int>();
            List<int> lists2 = new List<int>(); //保存那些加起来和是20的数
            foreach (int i in num)
            {
                lists.Add(i);
            }
            int sum = 0;    //和
            int index = 0;   //临时变量
            Random ra = new Random();
            do
            {
                index = ra.Next(lists.Count);

                if (sum + lists[index] <= 20)
                {
                    sum = sum + lists[index];
                    lists2.Add(lists[index]);
                    lists.Remove(lists[index]);
                }
                else
                {
                    lists.Remove(lists[index]);
                }
                //重新赋值
                if (lists.Count == 0)
                {
                    foreach (int i in num)
                    {
                        lists.Add(i);
                        lists2.Clear();
                    }
                    sum = 0;
                }
            }
            while (sum != 20 && lists.Count > 0);

            Console.WriteLine(sum);




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2