📄 groups.cs
字号:
}
}
}
}
else
{
//一区
tempResult = new int[firstItemTotal][];
for (int i = 0; i < firstItemTotal; i++)
{
iNum = iNum + 1;
tempResult[iNum - 1] = new int[6];
iTemp = 0;
//把第一区的结果赋给结果数组
for (int n = 0; n < group.GetFirstNum(); n++)
{
iTemp = iTemp + 1;
tempResult[iNum - 1][n] = int.Parse(firstGroup[i][n].ToString());
}
}
}
}
}
else
{
if (secondItemTotal > 0)
{
if (thirdItemTotal > 0)
{
//二三区
tempResult = new int[secondItemTotal * thirdItemTotal][];
for (int j = 0; j < secondItemTotal; j++)
{
for (int k = 0; k < thirdItemTotal; k++)
{
iNum = iNum + 1;
tempResult[iNum - 1] = new int[6];
iTemp = 0;
//把第二区的结果赋给结果数组
for (int n = 0; n < group.GetSecondNum(); n++)
{
iTemp = iTemp + 1;
tempResult[iNum - 1][iTemp - 1] = int.Parse(secondGroup[j][n].ToString());
}
//把第三区的结果赋给结果数组
for (int n = 0; n < group.GetThirdNum(); n++)
{
iTemp = iTemp + 1;
tempResult[iNum - 1][iTemp - 1] = int.Parse(thirdGroup[k][n].ToString());
}
}
}
}
else
{
//二区
tempResult = new int[secondItemTotal][];
for (int j = 0; j < secondItemTotal; j++)
{
iNum = iNum + 1;
tempResult[iNum - 1] = new int[6];
iTemp = 0;
//把第二区的结果赋给结果数组
iTemp = 0;
for (int n = 0; n < group.GetSecondNum(); n++)
{
iTemp = iTemp + 1;
tempResult[iNum - 1][iTemp - 1] = int.Parse(secondGroup[j][n].ToString());
}
}
}
}
else
{
if (thirdItemTotal > 0)
{
//三区
tempResult = new int[thirdItemTotal][];
for (int k = 0; k < thirdItemTotal; k++)
{
iNum = iNum + 1;
tempResult[iNum - 1] = new int[6];
iTemp = 0;
//把第三区的结果赋给结果数组
for (int n = 0; n < group.GetThirdNum(); n++)
{
iTemp = iTemp + 1;
tempResult[iNum - 1][iTemp - 1] = int.Parse(thirdGroup[k][n].ToString());
}
}
}
else
{
//没有选择任何数据
tempResult = new int[0][];
}
}
}
return tempResult;
}
#endregion
#region//获得当前组的所有组合
///<summary>
///获得当前组的所有组合
///</summary>
///<param name="group">当前组</param>
///<param name="seedNum">当前组中的种子数</param>
///<returns>返回一个所有组合的二维数组</returns>
private int[][] GetGroup(int[] group, int seedNum)
{
int firstItemNum; //当前数组的长度
int groupItemTotal; //结果集总数
int itemNum; //临时变量
int[][] tempGroup; //中间临时数组
int[] temp; //临时数组
itemNum = 0;
temp =new int[seedNum];
firstItemNum = group.Length;
groupItemTotal = GetGroupItemTotal(firstItemNum, seedNum);
tempGroup = new int[groupItemTotal][];
firstItemNum = group.Length;
//穷举当前组中种子数情况,最多六种
switch (seedNum)
{
case 1:
for (int i=0 ;i<firstItemNum;i++)
{
tempGroup[i] = new int[seedNum];
tempGroup[i][0] = int.Parse(group[i].ToString());
}
//tempGroup = group;
break;
case 2:
for (int i = 0; i < firstItemNum ; i++)
{
for (int j = 1; j < firstItemNum ; j++)
{
if (j <= i)
{
continue;
}
itemNum =itemNum +1;
tempGroup[itemNum - 1] = new int[seedNum];
tempGroup [itemNum-1 ][0]=int.Parse ( group[i].ToString ());
tempGroup [itemNum-1 ][1]=int.Parse ( group[j].ToString ());
}
}
break;
case 3:
//Console.WriteLine("Case 3");
for (int i = 0; i < firstItemNum; i++)
{
for (int j = 1; j < firstItemNum; j++)
{
if ( j <= i)
{
continue;
}
for (int k = 2; k < firstItemNum; k++)
{
if ((k == i) || k <= j)
{
continue;
}
itemNum = itemNum + 1;
tempGroup[itemNum - 1] = new int[seedNum];
tempGroup[itemNum - 1][0]= int.Parse(group[i].ToString());
tempGroup[itemNum - 1][1]= int.Parse(group[j].ToString());
tempGroup[itemNum - 1][2]= int.Parse(group[k].ToString());
//Console.Write("{0} ",group[i].ToString());
//Console.Write("{0} ",group[j].ToString());
//Console.WriteLine("{0} ",group[k].ToString());
}
}
}
break;
case 4:
//Console.WriteLine("Case 4");
for (int i = 0; i < firstItemNum; i++)
{
for (int j = 1; j < firstItemNum; j++)
{
if (j <= i)
{
continue;
}
for (int k = 2; k < firstItemNum; k++)
{
if (k == i || k <= j)
{
continue;
}
for (int l = 3; l < firstItemNum; l++)
{
if (l == i || l == j || l <= k)
{
continue;
}
itemNum = itemNum + 1;
tempGroup[itemNum - 1] = new int[seedNum];
tempGroup[itemNum - 1][0] = int.Parse(group[i].ToString());
tempGroup[itemNum - 1][1] = int.Parse(group[j].ToString());
tempGroup[itemNum - 1][2] = int.Parse(group[k].ToString());
tempGroup[itemNum - 1][3] = int.Parse(group[l].ToString());
}
}
}
}
break;
case 5:
//Console.WriteLine("Case 5");
for (int i = 0; i < firstItemNum; i++)
{
for (int j = 1; j < firstItemNum; j++)
{
if (j <= i)
{
continue;
}
for (int k = 2; k < firstItemNum; k++)
{
if (k == i || k <= j)
{
continue;
}
for (int l = 3; l < firstItemNum; l++)
{
if (l == i || l == j || l <= k)
{
continue;
}
for (int m = 4; m < firstItemNum; m++)
{
if (m == i || m == j || m == k || m <= l)
{
continue;
}
itemNum = itemNum + 1;
tempGroup[itemNum - 1] = new int[seedNum];
tempGroup[itemNum - 1][0] = int.Parse(group[i].ToString());
tempGroup[itemNum - 1][1] = int.Parse(group[j].ToString());
tempGroup[itemNum - 1][2] = int.Parse(group[k].ToString());
tempGroup[itemNum - 1][3] = int.Parse(group[l].ToString());
tempGroup[itemNum - 1][4] = int.Parse(group[m].ToString());
}
}
}
}
}
break;
case 6:
//Console.WriteLine("Case 6");
for (int i = 0; i < firstItemNum; i++)
{
for (int j = 1; j < firstItemNum; j++)
{
if (j <= i)
{
continue;
}
for (int k = 2; k < firstItemNum; k++)
{
if (k == i || k <= j)
{
continue;
}
for (int l = 3; l < firstItemNum; l++)
{
if (l == i || l == j || l <= k)
{
continue;
}
for (int m = 4; m < firstItemNum; m++)
{
if (m == i || m == j || m == k || m <= l)
{
continue;
}
for (int n = 5; n < firstItemNum; n++)
{
if (n == i || n == j || n == k || n == l || n <= m)
{
continue;
}
itemNum = itemNum + 1;
tempGroup[itemNum - 1] = new int[seedNum];
tempGroup[itemNum - 1][0] = int.Parse(group[i].ToString());
tempGroup[itemNum - 1][1] = int.Parse(group[j].ToString());
tempGroup[itemNum - 1][2] = int.Parse(group[k].ToString());
tempGroup[itemNum - 1][3] = int.Parse(group[l].ToString());
tempGroup[itemNum - 1][4] = int.Parse(group[m].ToString());
tempGroup[itemNum - 1][5] = int.Parse(group[n].ToString());
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -