假设有14个3维数组1,2,3,
4,5,6
7,8,9,
3,4,7,
6,4,6
x,x,x
x,x,x
x,x,x........要如何用数组1;1,2,3分别去和剩下的13个数组种的每一个数进行组合,最后得到一个14位的数?
4,5,6
7,8,9,
3,4,7,
6,4,6
x,x,x
x,x,x
x,x,x........要如何用数组1;1,2,3分别去和剩下的13个数组种的每一个数进行组合,最后得到一个14位的数?
class A
{
private int Count = 0; //存放记录数.
static void Main(string[] args)
{
char[,] c ={ { '1', '2', '3' }, { '3', '2', '1' }, { '4', '5', '6' }, { '7', '8', '9' }, { 'a', 'b', 'c' }, { 'd', 'e', 'f' }, { 'g', 'h', 'i' }, { 'j', 'k', 'l' } };
A newA = new A();
int n = c.GetLength(0);
newA.combine(c,n);
Console.WriteLine(newA.Count);
Console.Read();
}
private void combine(char[,] c, int n)
{
int[] r = new int[n];
for (int i = 0; i < n - 1; i++)
{
r[i] = 0;
}
bool f = true;
int k = n-1;
while (k >= 0)
{
if (f)
{
print(c, r);//输出结果
f = false;
Count++;
}
r[k]++;
if (r[k] >=c.GetLength(1))
{
k--;
continue;
}
if (k < n - 1)
{
r[++k] = -1;
continue;
}
if (k == n - 1)
{
f = true;
}
}
}
private void print(char[,] c, int[] r)
{
for (int i = 0; i < r.Length; i++)
{
Console.Write(c[i,r[i]]);
}
Console.WriteLine();
}
}