⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 groups.cs

📁 我自己开发的双色球预测软件
💻 CS
📖 第 1 页 / 共 4 页
字号:
                        }
                    }
                    break;
                //default:
                //    Console.WriteLine("Default case");
                //    break;
            }

            return tempGroup;
        }
        #endregion

        #region//获得当前组的所有组合
        ///// <summary>
        ///// 获得当前组的所有组合
        ///// </summary>
        ///// <param name="group">当前组</param>
        ///// <param name="seedNum">当前组中的种子数</param>
        ///// <returns>返回一个所有组合的二维数组</returns>
        //public int[][] GetGroupResult(int[] group, int seedNum)
        //{
        //    int groupLength;    //原始数组长度
        //    int resultToTal;    //结果数组长度
        //    int n;              //临时变量
        //    //int m;              //临时变量

        //    int[] temp;         //中间临时数组
        //    int[] tempSeed;     //临时种子数组
        //    int[][] tempResult; //结果数组
        //    int[][] initGroup;  //初始化数组

        //    temp = new int[2];
            
        //    groupLength =group .Length ;
        //    resultToTal=GetGroupItemTotal(groupLength ,seedNum );
        //    initGroup = new int[groupLength][];
        //    tempSeed =new int [seedNum ];
        //    tempResult=new int[resultToTal][];
        //    //生成带标志的数组
        //    for (int i = 0; i < groupLength; i++)
        //    {
        //        initGroup[i] = new int[2];
        //        if (i < seedNum)
        //        {
        //            initGroup[i][0] = 1;
        //        }
        //        else
        //        {
        //            initGroup[i][0] = 0;
        //        }
        //        initGroup[i][1] = int.Parse(group[i].ToString());
        //    }

        //    //生成结果数组
        //    for (int i = 0; i < resultToTal; i++)
        //    {
        //        n=0;

        //        tempResult[i] = new int[seedNum];
        //        for (int j=0;j<groupLength ;j++)
        //        {
        //            if (initGroup[j][0].ToString()=="1")
        //            {
        //                tempResult[i][n] = int.Parse(initGroup[j][1].ToString());
        //                //tempSeed[j]=int.Parse ( initGroup[j][1].ToString ());
        //                //Console.Write("{0}    ", tempResult[i][n].ToString());
        //                n = n + 1;
        //                if (n >= seedNum)
        //                {
        //                    break;
        //                }
        //            }
        //        }
        //        //把元素数组添加到临时结果数组中
        //        //Console.WriteLine("");
        //        //tempResult[i] = tempSeed;
        //        //交换1 0位置
        //        for (int j = groupLength - 1; j > 1; j--)
        //        {
        //            if (initGroup[j][0].ToString() == "0" && initGroup[j - 1][0].ToString() == "1")
        //            { 
        //                initGroup [j][0]=1;
        //                initGroup [j-1][0]=0;
        //                break;
        //            }
        //        }
        //        //if (i < groupLength - 1)
        //        //{
        //        //    for (int j = 0; j < groupLength-1; j++)
        //        //    {
        //        //        if (initGroup[j][0].ToString ()=="1" && initGroup [j+1][0].ToString()=="0")
        //        //        {
        //        //            initGroup[j][0] = 0;
        //        //            initGroup[j][1] = 1;
        //        //            break;
        //        //        }
        //        //    }
        //        //}
        //    }
        //    return tempResult;
        //}
        #endregion

        #region//获得结果组的总纪录数
        /// <summary>
        /// 获得结果组的总纪录数
        /// </summary>
        /// <param name="groupItemNum">原始组中的记录数</param>
        /// <param name="seedNum">原始组中的种子数</param>
        /// <returns>结果组的总纪录数</returns>
        private int GetGroupItemTotal(int groupItemNum, int seedNum)
        {
            int total;
            
            //组合公式: 从m中取n个 = m!/n!*(m-n)!
            switch (seedNum)
            {
                case 1:
                    total = groupItemNum;
                    break;
                case 2:
                    total = (groupItemNum * (groupItemNum - 1))/2;
                    break;
                case 3:
                    total = (groupItemNum * (groupItemNum - 1) * (groupItemNum - 2))/( 2 * 3);
                    break;
                case 4:
                    total = (groupItemNum * (groupItemNum - 1) * (groupItemNum - 2) * (groupItemNum - 3))/(4*3*2);
                    break;
                case 5:
                    total = (groupItemNum * (groupItemNum - 1) * (groupItemNum - 2) * (groupItemNum - 3) * (groupItemNum - 4))/(5*4*3*2);
                    break;
                case 6:
                    total = (groupItemNum * (groupItemNum - 1) * (groupItemNum - 2) * (groupItemNum - 3) * (groupItemNum - 4) * (groupItemNum - 5))/(6*5*4*3*2);
                    break;
                default:
                    total = 0;
                    break;
            }
            return total;

        }
        #endregion

        #region//初始化ComboBox
        /// <summary>
        /// 初始化ComboBox
        /// </summary>
        /// <param name="cb">cb控件名称</param>
        /// <param name="seed">种子数</param>
        public void FillCB(System.Windows.Forms.ComboBox cb, int seed)
        {
            cb.Items.Clear();
            for (int i = 1; i < seed + 1; i++)
            {
                cb.Items.Add(i);
            }
            cb.SelectedIndex = 0;
        }
        #endregion

        #region//删除数组记录中包含当前值得所有记录
        /// <summary>
        /// 单一删除数组记录
        /// </summary>
        /// <param name="finallyResult">需要筛选的数组</param>
        /// <param name="singleData">需要筛选的数据</param>
        /// <returns></returns>
        public int[][] SingleDel(int[][] finallyResult,int singleData)
        {
            int curNum;         //当前索引,在循环中使用
            //int newResultNum;    //新数组记录数
            Boolean bExist;     //当前组合中是否存在需要删除的数据
            int seedNum;        //种子数
            int resultNum;      //数组记录数
            int[][] tempResult;  //中间结果
            int[][] result;     //结果数组

            seedNum =6;
            curNum = 0;
            //newResultNum = 0;
            resultNum = finallyResult.Length;
            tempResult =new int[resultNum][];
            if (singleData == -1)
            {
                return finallyResult;
            }
            for(int i=0; i<resultNum ;i++)
            {
                bExist = false;
                //验证当前纪录中是否存在筛选数据值
                for(int j=0;j<seedNum ;j++)
                {
                    if (finallyResult[i][j].Equals(singleData))
                    {
                        bExist = true;
                        break;
                    }
                }

                if (!bExist)
                { 
                    //如果当前组合中不存在此值,则加入新数组中
                    tempResult[curNum] = new int[seedNum];
                    //for (int j = 0; j < seedNum; j++)
                    //{
                    //    tempResult[curNum][j] = int.Parse(finallyResult[i][j].ToString());
                    //}
                    finallyResult[i].CopyTo(tempResult[curNum], 0);
                    curNum = curNum + 1;
                }
            }

            //去掉数组中的空值
            result =new int [curNum ][];
            for (int i = 0; i < curNum; i++)
            {
                result[i] = new int[seedNum];
                for (int j = 0; j < seedNum; j++)
                { 
                    result[i][j]=int.Parse ( tempResult [i][j].ToString ());
                }
            }
            //返回最终结果数组
            return result;
        }

        #endregion

        #region//删除数组记录中不包含当前值得所有记录
        /// <summary>
        /// 删除数组记录中不包含当前值得所有记录
        /// </summary>
        /// <param name="finallyResult">原始数组</param>
        /// <param name="singleData">需要检测的值</param>
        /// <returns>成功返回过滤后的数组,失败返回原始数组</returns>
        public int[][] SingleFilter(int[][] finallyResult, int singleData)
        {
            int curNum;            //当前索引,在循环中使用
            //int newResultNum;    //新数组记录数
            Boolean bExist;        //当前组合中是否存在需要删除的数据
            int seedNum;           //种子数
            int resultNum;         //数组记录数
            int[][] tempResult;    //中间结果
            int[][] result;        //结果数组

            seedNum =6;
            curNum = 0;
            //newResultNum = 0;
            resultNum = finallyResult.Length;
            tempResult =new int[resultNum][];
            if (singleData == -1)
            {
                return finallyResult;
            }
            for(int i=0; i<resultNum ;i++)
            {
                bExist = false;
                //验证当前纪录中是否存在筛选数据值
                for(int j=0;j<seedNum ;j++)
                {
                    if (finallyResult[i][j].Equals(singleData))
                    {
                        bExist = true;
                        break;
                    }
                }

                if (bExist)
                { 
                    //如果当前组合中存在此值,则加入新数组中
                    tempResult[curNum] = new int[seedNum];
                    //for (int j = 0; j < seedNum; j++)
                    //{
                    //    tempResult[curNum][j] = int.Parse(finallyResult[i][j].ToString());
                    //}
                    finallyResult[i].CopyTo(tempResult[curNum], 0);
                    curNum = curNum + 1;
                }
            }

            //去掉数组中的空值
            result =new int [curNum ][];
            for (int i = 0; i < curNum; i++)
            {
                result[i] = new int[seedNum];
                for (int j = 0; j < seedNum; j++)
                { 
                    result[i][j]=int.Parse ( tempResult [i][j].ToString ());
                }
            }
            //返回最终结果数组
            return result;
        }
        #endregion

        #region//批量筛选数据
        /// <summary>
        /// 批量筛选数据
        /// </summary>
        /// <param name="formerlyResult">原始数组</param>
        /// <param name="filter">过滤数组</param>
        /// <param name="seedNum">种子数</param>
        /// <returns>成功返回筛选后的新数组,失败返回原始数组</returns>
        public int[][] MuchFilter(int[][] formerlyResult, int[] filter, int iSeedNum)
        {
            int curNum;            //当前索引,在循环中使用
            int seedNum;           //种子数
            int resultNum;         //数组记录数
            int[][] tempResult;    //中间结果
            int[][] result;        //结果数组
            int existNum;          //当前组合中村在筛选数据的个数

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -