输入n(1-10之间数字),将数字分解显示,如6可以显示为6,5+1,4+2,4+1+1.....
嵌套for循环+if else 判断语句,思路就是这样,
for i 0 ..9
for j 0..9
if i+j=输入值
printf .....
end if
大概就这样。。。。
1+1+1+1+1
1+1+1+2
1+1+3
1+2+2
1+4
2+3
5
using System;
using System.Linq;
using System.Collections.Generic;
public class Test
{
static int[] d;
public static void Main()
{
int m = 5;
var query = foo(new int[]{ }, m).Select(item => string.Join("+", item)).Distinct();
foreach (var item in query)
Console.WriteLine(item);
Console.WriteLine(query.Count());
}
static IEnumerable<IEnumerable<int>> foo(IEnumerable<int> seed, int m)
{
if (seed.Sum() == m)
{
yield return seed;
}
else
{
if (seed.Count() == 0)
{
for (int i = 1; i <= m; i++)
{
var items = foo(seed.Concat(new int[] { i }), m);
foreach (var item in items) yield return item;
}
}
else
{
if (seed.Sum() < m)
{
for (int i = seed.Last(); i <= m; i++)
{
var items = foo(seed.Concat(new int[] { i }), m);
foreach (var item in items) yield return item;
}
}
}
}
}
}