有n个数字,能组成多少个互不相同且无重复数字的k位数?都是多少?
using System;
using System.Collections.Generic;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
string[] str = Console.ReadLine().Split(',');
int[] num = Array.ConvertAll<string, int>(str, int.Parse);
List<int[]> myfun(int x,int y)
{
List<int[]> res = new List<int[]>();
void recurrence(int x,int y,int[] num)
{
num = num == null ? new int[y + 1] : num;
if (y == 0)
{
int[] temp = new int[num.Length - 1];
Array.Copy(num, 1, temp, 0, temp.Length);
//数组复制:原数组,开始下标,目标数组,开始下标,复制长度
res.Add(temp);
}
else
{
for(int i = num[0] == 0 ? 1 : num[num[0]]; i <=x; i++)
//num[num[0]] 可与上一位数字相同,若num[num[0]]+1 则数字必须大于前一位。
{
num[++num[0]] = i;
recurrence(x, y - 1, num);
num[0]--;
}
}
}
recurrence(x, y, null);
return res;
}
List<int[]> wode = myfun(num[0], num[1]);
foreach (var item in wode)
{
foreach (var sub in item)
{
Console.Write(sub);
}
Console.WriteLine();
}
Console.WriteLine(wode.Count);
}
}
}