• C# ACM poj1007


    求逆序数,快排

      public static void acm1007(int a, string[] c)
            {
                Dictionary<int, string> dic = new Dictionary<int, string>();
                int[] i = new int[a];
                var j = 0;
                foreach (var item in c)
                {
                    int k = Acm1007Unit(item);
                    if (!dic.ContainsKey(k))
                    {
                        i[j] = k;
                        j++;
                        dic.Add(k, item + ",");
                    }
                    else
                    {
                        dic[k] += item + ",";
                        i[j] = -1;
                        j++;
                    }
                }
                 QSortDIY(i, 0, i.Length - 1);
    
                for (int jjj = 0; jjj < i.Length ; jjj++)
                {
                    if (i[jjj] != -1)
                    {
                        Console.Write(dic[i[jjj]]);
                    }
                }
    
            }
            public static int Acm1007Unit(string a)
            {
                int anum = 0;
                int cnum = 0;
                int gnum = 0;
    
                int r = 0;
                for (int i = a.Length - 1; i >= 0; i--)
                {
                    switch (a[i])
                    {
                        case 'A':
                            anum++;
                            break;
                        case 'C':
                            r += anum;
                            cnum++;
                            break;
                        case 'G':
                            r += anum + cnum;
                            gnum++;
                            break;
                        case 'T':
                            r += anum + cnum + gnum;
                            break;
                    }
                }
                return r;
            }
            public static void QSortDIY(int[] array, int low, int high)
            {
                if (low >= high)
                {
                    return;
                }
                int ie = QSortUnit(array, low, high);
                QSortDIY(array, low, ie - 1);
                QSortDIY(array, ie + 1, high);
            }
            private static int QSortUnit(int[] array, int low, int high)
            {
                int key = array[low];
                while (low < high)
                {
                    while (array[high] >= key && high > low)
                    {
                        --high;
                    }
                    array[low] = array[high];
                    while (array[low] <= key && high > low)
                    {
    
                        ++low;
                    }
                    array[high] = array[low];
                }
                array[low] = key;
                return high;
            }
  • 相关阅读:
    python-设计模式:抽象类
    python协程的使用
    python生成器异步使用
    python2和python3的内存使用情况
    python基础
    python对象序列化pickle
    docekr-image的区别和container;docker run和start,create
    airflow 安装配置celery+rabbitmq celery+redis
    Centos7 安装部署 Airflow
    centos7 安装后静态ip的配置
  • 原文地址:https://www.cnblogs.com/DhyDream/p/4349436.html
Copyright © 2020-2023  润新知