<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    using System;
    using System.Collections.Generic;
    using System.Text;
    using BestCut.Classes;
    using System.Windows.Forms;
    using System.Windows;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Collections;
    using System.Data;
    namespace BestCut
    {
       public class ManagePage : System.Windows.Forms.Form
        {
            private DbAccess _db;
            public DbAccess db
            {

                get
                {
                    if (_db == null)
                    {
                        _db = new DbAccess();
                    }
                    return _db;
                }
            }
           public string CheckString(string str)
           {
               return str.Replace("'","''");
           }
           /// <summary>
           /// 檢查小數格式
           /// </summary>
           /// <param name="sender"></param>
           /// <param name="e"></param>
           public void KeyUpCheckNum(object sender, KeyEventArgs e)
           {
              // MessageBox.Show("該項不是數據格式!!");
               ((TextBox)sender).Text = Regex.Replace(((TextBox)sender).Text, "[^\\d\\u002E]+", "");
               if (Regex.IsMatch(((TextBox)sender).Text, "[\\d]*[\\u002E]?[\\d]*"))
               {

               }
               else
               {
                   MessageBox.Show("該項不是數據格式!!");
                   ((TextBox)sender).Focus();

               }
           }
           /// <summary>
           /// 檢查整數
           /// </summary>
           /// <param name="sender"></param>
           /// <param name="e"></param>
           public void KeyUpCheckInt(object sender, KeyEventArgs e)
           {
               ((TextBox)sender).Text = Regex.Replace(((TextBox)sender).Text, "[^\\d]*", "");
               if (Regex.IsMatch(((TextBox)sender).Text, "\\d*"))
               {

               }
               else
               {
                   MessageBox.Show("該項不是數據格式!!");
                   ((TextBox)sender).Focus();

               }
           }
           /// <summary>
           /// 迭代計算
           /// </summary>
           /// <param name="dic"></param>
           /// <param name="sums"></param>
           /// <param name="res"></param>
           /// <returns></returns>
           public Dictionary<string, int> GetResult(Dictionary<string, int> dic,double sums,Dictionary<string,int> res)
           {
               Package p = new Package();
               ArrayList needs = new ArrayList();
               #region 加載測試數據
               try
               {
                   foreach (string str in dic.Keys)
                   {
                       for (int i = 0; i < dic[str]; i++)
                       {
                           needs.Add(str);
                       }
                   }
               }
               catch (Exception ex)
               {

                   //Console.WriteLine(ex.Message);
               }

     


               #endregion

               //從大到小排序
               IComparer myComperMethod = new comperOne();
               needs.Sort(myComperMethod);


               //迭代方法
               for (int i = 0; i < needs.Count; )
               {
                   string result = string.Empty;
                   double temp = double.Parse(needs[i].ToString().Split('-')[0]);
                   ArrayList tempResult = new ArrayList();
                   tempResult.Add(needs[i]);
                   needs.RemoveAt(i);

                   for (int j = 0; j < needs.Count; )
                   {
                       if (temp + double.Parse(needs[j].ToString().Split('-')[0]) > sums)
                       {
                           j++;
                       }
                       else
                       {
                           temp += double.Parse(needs[j].ToString().Split('-')[0]);
                           tempResult.Add(needs[j]);

                           needs.RemoveAt(j);
                       }
                   }

                   //記錄結果
                   for (int k = 0; k < tempResult.Count; k++)
                   {
                       result += tempResult[k].ToString() + ",";
                   }
                   result = result.Trim(',');

                   result = p.stringFormat(result);

                   if (res.ContainsKey(result))
                   {
                       res[result]++;
                   }
                   else
                   {
                       res.Add(result, 1);
                   }

                 
               }
               return res;
           }
           /// <summary>
           ///
           /// </summary>
           /// <param name="str"></param>
           /// <returns></returns>
           public double Sums(string str)
           {
               string[] temp = str.Split(',');
               double sum= 0;
               try
               {
                   for (int i = 0; i < temp.Length; i++)
                   {
                       sum += Convert.ToDouble(temp[i].Split('-')[0]);
                   }
               }
               catch
               {

                   sum = 0;
               }
          
               return sum;
           }
           public DataTable getDataPart(string str)
           {
               Dictionary<string, int> dics = new Dictionary<string, int>();
               string[] temp = str.Split(',');
               foreach (string tempstr in temp)
               {
                   if (dics.ContainsKey(tempstr))
                   {
                       dics[tempstr]++;
                   }
                   else
                   {
                       dics.Add(tempstr,1);
                   }
               }
              
               DataTable dt = new DataTable();
               dt.Columns.Add("Gid");
               dt.Columns.Add("PLength");
               dt.Columns.Add("PCount");
               dt.Columns.Add("P45");
               dt.Columns.Add("P45Both");
               dt.Columns.Add("PWidth");
               int j = 0;
               double d = 0;
               string tempLength = "";
               string temp45 = "";
               string temp45Both = "";
               string tempWidth = "";
             foreach(string tempdic in dics.Keys)
             {
                
                 DataRow dr = dt.NewRow();
                 dr["Gid"] = (++j).ToString();
                 tempLength = tempdic.Split('-')[0];
                 temp45 = tempdic.Split('-')[1].ToLower();
                 temp45Both = tempdic.Split('-')[2].ToLower();
                 tempWidth = tempdic.Split('-')[3];
                 double.TryParse(tempLength, out d);
                 dr["PLength"] = temp45 == "true" ? (temp45Both == "true" ? (d - 5 - (double.Parse(tempWidth)*2)) : (d - 5 - double.Parse(tempWidth))) : (d - 5); ;
                 dr["PCount"] = (dics[tempdic]).ToString();
                 dr["P45"] = temp45 == "true"?("是"):("否");
                 dr["P45Both"] = temp45Both == "true" ? ("是") : ("否");
                 dr["PWidth"] = tempWidth;
                 dt.Rows.Add(dr);
             }
              
             return dt;


           }
           /// <summary>
           /// 獲取信息
           /// </summary>
           /// <param name="str"></param>
           /// <returns></returns>
           public string getStrDetail(string str)
           {
               string tempLength = "";
               string temp45 = "";
               string temp45Both = "";
               string tempWidth = "";
               double d = 0;
               tempLength = str.Split('-')[0];
               temp45 = str.Split('-')[1].ToLower();//=="true"?("是"):("不是");
               temp45Both = str.Split('-')[2].ToLower();//=="true"?("是"):("不是");
               tempWidth = str.Split('-')[3];
                double.TryParse(tempLength,out d);
                d = d-5;
                d=temp45 == "true" ? (temp45Both == "true" ? (d - 5 - (double.Parse(tempWidth)*2)) : (d - 5 - double.Parse(tempWidth))) : (d - 5);

                return string.Format("{0}mm{1}{2}", d.ToString(), temp45 == "true" ? (temp45Both == "true" ? ("---◢▆◣") : ("--◢▆")) : (""), tempWidth == "0" ? ("") : (string.Format("{0}{1}{2}","--" , tempWidth ,"mm角度寬")));
           }
           /// <summary>
           /// 獲取型材信息
           /// </summary>
           /// <param name="str"></param>
           /// <returns></returns>
           public string getDataPartDetail(string str)
           {
               StringBuilder tempsb = new StringBuilder();
               Dictionary<string, int> dics = new Dictionary<string, int>();
               string[] temp = str.Split(',');
               foreach (string tempstr in temp)
               {
                   if (dics.ContainsKey(tempstr))
                   {
                       dics[tempstr]++;
                   }
                   else
                   {
                       dics.Add(tempstr, 1);
                   }
               }

          
               int j = 0;
               double d = 0;
               ArrayList al = new ArrayList();
               foreach (string tempdic in dics.Keys)
               {
                   al.Add(new Model(tempdic, dics[tempdic]));
                   //tempsb.AppendFormat("{0}個{1}mm\n",dics[tempdic].ToString(),tempdic);
               
               }
               al.Sort(new myCompare());
               foreach (object o in al)
               {
                   Model m = (Model)o;
                   tempsb.AppendFormat("{0}個{1}\n", m.Sum.ToString(), getStrDetail(m.Lists));
               }

               return tempsb.ToString();


           }
       }
        public class Model
        {
            private string _Lists;
            private double _Sum;
            public string Lists
            {
                get { return _Lists; }
                set { _Lists = value; }
            }
            public double Sum
            {
                get { return _Sum; }
                set { _Sum = value; }
            }
            public Model(string lists, double sum)
            {
                this.Lists = lists;
                this.Sum = sum;
            }
        }
        //排序方法
        public class comper : IComparer
        {
            int IComparer.Compare(object a, object b)
            {
                float flotA = 0, flotB = 0;
                bool isFloat = float.TryParse(a.ToString(), out flotA) && float.TryParse(b.ToString(), out flotB);
                if (!isFloat)
                {
                    return -string.Compare(a.ToString(), b.ToString(), false);
                }
                else
                {
                    return flotA == flotB ? 0 : (flotA > flotB ? -1 : 1);
                }
            }
        }
        //排序方法
        public class comperOne : IComparer
        {
            int IComparer.Compare(object a, object b)
            {
                float flotA = 0, flotB = 0;
                bool isFloat = float.TryParse(a.ToString().Split('-')[0], out flotA) && float.TryParse(b.ToString().Split('-')[0], out flotB);
                if (!isFloat)
                {
                    return -string.Compare(a.ToString(), b.ToString(), false);
                }
                else
                {
                    return flotA == flotB ? 0 : (flotA > flotB ? -1 : 1);
                }
            }
        }
        //排序降序方法
        public class comperSort : IComparer
        {
            int IComparer.Compare(object a, object b)
            {
                float flotA = 0, flotB = 0;

                bool isFloat = float.TryParse(((System.Windows.Forms.DataGridViewRow)a).Cells[2].Value.ToString(), out flotA) && float.TryParse(((System.Windows.Forms.DataGridViewRow)b).Cells[2].Value.ToString(), out flotB);
                return (int)(flotA - flotB);
            }
        }

        public class myCompare : IComparer
        {
            int IComparer.Compare(object x, object y)
            {
                return (int)((((Model)y).Sum - ((Model)x).Sum) * 100);
            }

        }
        public class myLenCompare : IComparer
        {
            int IComparer.Compare(object x, object y)
            {
                return x.ToString().Length - y.ToString().Length;
                // return ((Model)x).Lists.ToString().Length - ((Model)y).Lists.ToString().Length;
            }

        }
        public class Package
        {
            public double[] goods;
            public double dmin;
            double tempsum;
            // public List<Model> lists = new List<Model>();
            public ArrayList lists = new ArrayList();
            public ArrayList listsModel = new ArrayList();

            public void Init(double sum, double[] goods)
            {
                tempsum = sum;
                this.goods = goods;
                ArrayList al = new ArrayList();
                foreach (double d in goods)
                {
                    al.Add(d);
                }
                al.Sort();
                dmin = (Double)al[0];
            }
            /// <summary>
            /// 用遞歸算出
            /// </summary>
            /// <param name="puts">目前放入背包的數</param>
            /// <param name="unPuts">可放入背包的數</param>
            /// <param name="sum">背包還剩的容量</param>
            public void ShowComposes(List<double> puts, double[] unPuts, double sum)
            {
                //輸出當前放入背包符合條件的所有數
                bool exist = false;
                double sums = 0;
                string temp = "";

                foreach (double d in puts)
                {
                    temp += d.ToString() + ",";
                    //System.Console.Write(d + " ");
                    sums += d;
                    exist = true;
                }
                if (exist)
                {
                    if (sums + dmin > tempsum)
                    {
                        try
                        {
                            lists.Add(new Model(temp.Trim(','), sums));

                        }
                        catch (Exception ex)
                        {

                            Console.WriteLine(ex.Message);
                        }

                    }
                    System.Console.Write("=" + sums);
                    System.Console.WriteLine();
                }

                //在可放入背包的數字中,選擇可放的數并放進背包
                foreach (double d in unPuts)
                {
                    if (d < sum)
                    {
                        List<double> newPuts = puts.GetRange(0, puts.Count);//.ToList<double>();
                        newPuts.Add(d);
                        ShowComposes(newPuts, goods, sum - d);
                    }
                }
                // System.Console.WriteLine(dmin.ToString());
            }
            /// <summary>
            ///
            /// </summary>
            public void getBest()
            {
                lists.Sort(new myCompare());
                foreach (Model m in lists)
                {

                    bool state = false;
                    foreach (double dtemp in goods)
                    {
                        if (dtemp >= (tempsum / 2 - 1))
                        {
                            state = m.Lists.IndexOf(dtemp.ToString()) > 0;
                            if (state)
                                break;
                        }
                    }
                    if (state)
                    {
                        listsModel.Add(new Model(m.Lists, m.Sum));
                        //  Console.WriteLine("zun={0}----sum={1}", m.Lists, m.Sum.ToString());
                    }


                }
            }
            public string stringFormat(string t1)
            {
                //
                string[] tempNum = t1.Split(',');
                //ArrayList tempal = new ArrayList();
                //foreach (string t in tempNum)
                //{
                //    tempal.Add(t);
                //}
                //tempal.Sort();
                t1 = "";
                Array.Sort(tempNum);
                foreach (string t in tempNum)
                {
                    t1 += t + ",";
                }
                return t1.Trim(',');
            }
            public Dictionary<ArrayList, string> sortDistinct()
            {
                ArrayList tempAl = new ArrayList();
                ArrayList al = new ArrayList();

                foreach (object o in listsModel)
                {
                    Model m = (Model)o;
                    m.Lists = stringFormat(m.Lists);
                    tempAl.Add(m);


                }


                foreach (object o in tempAl)
                {
                    if (!al.Contains(((Model)o).Lists))
                    {
                        al.Add(((Model)o).Lists);
                    }

                }
                al.Sort(new myLenCompare());
                ArrayList alo = new ArrayList();
                ArrayList tempal = null;
                Dictionary<ArrayList, string> dicCon = new Dictionary<ArrayList, string>();
                foreach (object o in al)
                {
                    // Console.WriteLine(o.ToString() + "----");
                    tempal = new ArrayList();
                    string[] array = o.ToString().Split(',');
                    Dictionary<string, int> dicCount = new Dictionary<string, int>();
                    foreach (string s in array)
                    {
                        if (!dicCount.ContainsKey(s))
                            dicCount.Add(s, 1);
                        else
                            dicCount[s]++;
                    }
                    foreach (string s in dicCount.Keys)
                    {
                        tempal.Add(new Model(s, dicCount[s]));
                    }

                    dicCon.Add(tempal, o.ToString());

                }

                return dicCon;

            }
        }
    }

    posted on 2009-03-24 11:22 sanmao 閱讀(225) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    常用鏈接

    留言簿(5)

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲AV无码成人精品区狼人影院| 亚洲精品第一国产综合精品| 亚洲成av人在线观看网站| 亚洲一区二区三区免费观看| 久久久久久亚洲精品| 久久精品电影免费动漫| 亚洲av无码乱码国产精品| 在线观看肉片AV网站免费| 亚洲AV无码乱码国产麻豆穿越| 午夜精品射精入后重之免费观看| 亚洲福利在线观看| 久久精品国产免费观看 | 免费看又爽又黄禁片视频1000| 亚洲精品456人成在线| 成人毛片免费观看| 色屁屁在线观看视频免费| 亚洲国产成人久久综合区| 中国内地毛片免费高清| 亚洲永久永久永久永久永久精品| www.免费在线观看| 久久久亚洲精华液精华液精华液 | 亚洲综合另类小说色区| 久久国产精品免费看| 亚洲av无码不卡久久| 日本二区免费一片黄2019| 久久国产精品免费| 日韩精品亚洲人成在线观看| 毛片免费在线观看网址| 免费看美女午夜大片| 亚洲综合精品一二三区在线| 成年女人男人免费视频播放| 日本特黄特色AAA大片免费| 亚洲Av永久无码精品三区在线 | 在线观看免费a∨网站| 黄网站色成年片大免费高清| 亚洲成色在线综合网站 | 成人免费福利电影| 巨胸喷奶水www永久免费| 亚洲国产日产无码精品| 亚洲A丁香五香天堂网| 久久久久久精品免费看SSS|