C\#중 도시 노선 도의 순 알고리즘 및 추가 적 인 극권 값

10967 단어 C#도시 노선 도
전에 그림 에 대한 코드 를 많이 봤 는데 오늘 은 제 가 자주 사용 하 는 데이터 구 조 를 사용 하여 알고리즘 에 속 하 는 부분 을 적 었 습 니 다.시간 복잡 도 를 높이 고 최 악의 경우 O(2^n)  최 적 화 된:O(n^2)라인 그림 은 양 방향 가중치 입 니 다.  예 를 들 어 A-B 거 리 는 5000 km 이 고 B-A 는 5000 km 가 아 닐 수도 있 습 니 다.그래서 저 는 LoadData 방법 에서 교환 변 수 를 하지 않 고 집합 에 직접 저장 하여 출발점 으로 다음 연결 점 을 찾 고 출발점 노드 로 되 돌아 가 찾 습 니 다.      코드 가 좀 복잡 하지만 조정 하려 고 했 는데!

  static List<string[]> maindata = null;
        static int isend = 1;
        static List<string> fresult = new List<string>();

        static void Main(string[] args)
        {
            string begin = " ";
            string end = " ";
            LoadData();
            Program pl = new Program();
            List<string> beginlist = new List<string>();
            beginlist.Add(begin);
            pl.GetF(beginlist);

            foreach (string a in fresult)
                Console.WriteLine(a);
            Console.WriteLine(fresult.Count);
            //main data end

            List<string> searchlist = new List<string>();
            string temp = "";
            foreach (string f in fresult)
            {
                if (f.IndexOf(end) > -1)
                {
                    temp = f.Substring(0, f.LastIndexOf(end) + end.Length);
                    if (searchlist.Contains(temp) == false)
                        searchlist.Add(temp);
                }
            }
            Console.WriteLine(begin + "------------->" + end + ":");
            foreach (string a in searchlist)
                Console.WriteLine(a);
            Console.WriteLine(searchlist.Count);
            //search data   A to B

            string a1 = " :" + GetMaxQuk(searchlist);
            Console.WriteLine(a1);
            a1 = " :" + GetMinQuk(searchlist);
            Console.WriteLine(a1);

            Console.ReadKey();
        }

  
        private static string GetMaxQuk(List<string> nage)
        {
            string resultsrt = "";

            string[] nagearry = null;
            int val, maxval = 0;
            for (int s = 0; s < nage.Count; s++)
            {
                nagearry = nage[s].Split('-');//s
                val = GetVal(nagearry);
                if (val > maxval)
                {
                    maxval = val;
                    resultsrt = nage[s] + ":" + val;
                }
                nagearry = null;
            }
            return resultsrt;
        }


        private static string GetMinQuk(List<string> nage)
        {
            string resultsrt = "";
            string[] nagearry = null;
            int val, minval = int.MaxValue;
            for (int s = 0; s < nage.Count; s++)
            {
                nagearry = nage[s].Split('-');//s
                val = GetVal(nagearry);
                if (val < minval)
                {
                    minval = val;
                    resultsrt = nage[s] + ":" + val;
                }
                nagearry = null;
            }
            return resultsrt;
        }

 
        private static int GetVal(string[] findarry)
        {
            int val = 0;
            for (int ss = 0; ss < findarry.Length - 1; ss = ss + 1)
            {
                foreach (string[] aa in maindata)
                {
                    if (aa[0] == findarry[ss] && aa[1] == findarry[ss + 1])
                    {
                        val += Convert.ToInt32(aa[2]);
                        break;
                    }
                }
            }
            return val;
        }

        List<string> GetF(List<string> beginlist)
        {
           // an
            if (isend == 0)
                return GetF(returnlist);
            else
                return null;
        }


       static void LoadData()
       {
            List<string[]> backlist = null;
            string[] arry = null;

            backlist = new List<string[]>();

            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "3000";
            backlist.Add(arry);
            arry = null;
            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "2500";
            backlist.Add(arry);
            arry = null;

            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "3000";
            backlist.Add(arry);
            arry = null;
            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "3100";
            backlist.Add(arry);
            arry = null;
            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "2800";
            backlist.Add(arry);
            arry = null;

            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "2800";
            backlist.Add(arry);
            arry = null;
            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "1500";
            backlist.Add(arry);
            arry = null;
            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "800";
            backlist.Add(arry);
            arry = null;

            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "2500";
            backlist.Add(arry);
            arry = null;
            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "3100";
            backlist.Add(arry);
            arry = null;
            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "1500";
            backlist.Add(arry);
            arry = null;
            maindata = backlist;

 
            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "800";
            backlist.Add(arry);
            arry = null;
            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "500";
            backlist.Add(arry);
            arry = null;
            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "500";
            backlist.Add(arry);
            arry = null;

 
            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "3200";
            backlist.Add(arry);
            arry = null;
            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "3200";
            backlist.Add(arry);
            arry = null;
            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "3500";
            backlist.Add(arry);
            arry = null;
            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "3500";
            backlist.Add(arry);
            arry = null;
            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "5400";
            backlist.Add(arry);
            arry = null;
            arry = new string[3];
            arry[0] = " ";
            arry[1] = " ";
            arry[2] = "5400";
            backlist.Add(arry);
            arry = null;

        }
 
다음은 테스트 결과 입 니 다.

// begin
-
-
- -
- -
- -
- -
- -
- -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
count:61
// end

 
 
// begin
- -
- - -
- - -
- - -
- - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - -
- - - - -
- - - - -
- - - - -
- - - - -
- - - - -
count:17
: - - - - - :17300
: - - :3000
// end

마지막 ps:본인 의 방법 이 어 리 석 지만 저 는 벽돌 을 던 져 옥 을 끌 어 올 렸 습 니 다.

좋은 웹페이지 즐겨찾기