111,090
社区成员




/// <summary>
/// 求一个数 有些数的之和组成的排列
/// </summary>
/// <param name="sum">和数</param>
/// <param name="array">构成的数字</param>
/// <returns>返回能够组成的一个集合</returns>
public static List<List<int>> OutPut(int sum, int[] array)
{
List<List<int>> result = new List<List<int>>();
//实现过程
return result;
}
private static IEnumerable<IEnumerable<int>> OutPut1(int sum, int[] array, IEnumerable<int> seed)
{
if (seed.Sum() == sum)
yield return seed;
else
foreach (var item in array)
{
if (item >= seed.LastOrDefault())
{
var newseed = seed.Concat(new int[] { item });
if (newseed.Sum() <= sum)
{
var col = OutPut1(sum, array, newseed);
foreach (var item1 in col)
yield return item1;
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<List<int>> result = OutPut(16, new int[] { 1, 2, 4 });
foreach (var item in result)
Console.WriteLine(string.Join(",", item.Select(x => x.ToString())));
}
/// <summary>
/// 求一个数 有些数的之和组成的排列
/// </summary>
/// <param name="sum">和数</param>
/// <param name="array">构成的数字</param>
/// <returns>返回能够组成的一个集合</returns>
public static List<List<int>> OutPut(int sum, int[] array)
{
return OutPut1(sum, array, new List<int>()).Select(x => x.ToList()).ToList();
}
private static IEnumerable<IEnumerable<int>> OutPut1(int sum, int[] array, IEnumerable<int> seed)
{
if (seed.Sum() == sum)
yield return seed;
else
foreach (var item in array.Where(x => x >= seed.LastOrDefault()).Select(x => seed.Concat(new int[] { x })).Where(x => x.Sum() <= sum).SelectMany(x => OutPut1(sum, array, x)))
yield return item;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var result = OutPut(16, new int[] { 1, 2, 4 }, new List<int>());
foreach (var item in result)
Console.WriteLine(string.Join(",", item.Select(x => x.ToString())));
}
/// <summary>
/// 求一个数 有些数的之和组成的排列
/// </summary>
/// <param name="sum">和数</param>
/// <param name="array">构成的数字</param>
/// <returns>返回能够组成的一个集合</returns>
public static IEnumerable<List<int>> OutPut(int sum, int[] array, IEnumerable<int> seed)
{
if (seed.Sum() == sum)
yield return seed.ToList();
else
foreach (var item in array.Where(x => x >= seed.LastOrDefault()).Select(x => seed.Concat(new int[] { x })).Where(x => x.Sum() <= sum).SelectMany(x => OutPut(sum, array, x)))
yield return item;
}
}
}
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,2
1,1,1,1,1,1,1,1,1,1,1,1,2,2
1,1,1,1,1,1,1,1,1,1,1,1,4
1,1,1,1,1,1,1,1,1,1,2,2,2
1,1,1,1,1,1,1,1,1,1,2,4
1,1,1,1,1,1,1,1,2,2,2,2
1,1,1,1,1,1,1,1,2,2,4
1,1,1,1,1,1,1,1,4,4
1,1,1,1,1,1,2,2,2,2,2
1,1,1,1,1,1,2,2,2,4
1,1,1,1,1,1,2,4,4
1,1,1,1,2,2,2,2,2,2
1,1,1,1,2,2,2,2,4
1,1,1,1,2,2,4,4
1,1,1,1,4,4,4
1,1,2,2,2,2,2,2,2
1,1,2,2,2,2,2,4
1,1,2,2,2,4,4
1,1,2,4,4,4
2,2,2,2,2,2,2,2
2,2,2,2,2,2,4
2,2,2,2,4,4
2,2,4,4,4
4,4,4,4
Press any key to continue . . .