A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

比如:数组{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}   
要找出,哪些数相加等于20。并输出组合的结果  注意:不一定是2个数,可以是多个数,只要相加等于20

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

1 个回复

倒序浏览
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);

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马