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

📄 example.cs

📁 Data Structures and Algorithms with Object-Oriented Design Patterns in C# 这本书的范例代码dll自己反编译的source
💻 CS
字号:
namespace Opus6
{
    using System;

    [Copyright("Copyright (c) 2001 by Bruno R. Preiss, P.Eng."), Version("$Id: Example.cs,v 1.8 2001/10/28 19:50:09 brpreiss Exp $")]
    public class Example
    {
        public static int BinarySearch(ComparableObject[] array, ComparableObject target, int i, int n)
        {
            if (n == 0)
            {
                throw new ArgumentException("empty array");
            }
            if (n == 1)
            {
                if (array[i] != target)
                {
                    throw new ArgumentException("target not found");
                }
                return i;
            }
            int num1 = i + (n / 2);
            if (array[num1] <= target)
            {
                return Example.BinarySearch(array, target, num1, n - (n / 2));
            }
            return Example.BinarySearch(array, target, i, n / 2);
        }

        public static int Binom(int n, int m)
        {
            int[] numArray1 = new int[n + 1];
            numArray1[0] = 1;
            for (int num1 = 1; num1 <= n; num1++)
            {
                numArray1[num1] = 1;
                for (int num2 = num1 - 1; num2 > 0; num2--)
                {
                    int[] numArray2;
                    int num4;
                    (numArray2 = numArray1)[num4 = num2] = numArray2[num4] + numArray1[num2 - 1];
                }
            }
            return numArray1[m];
        }

        public static void BucketSort(int[] a, int m)
        {
            int[] numArray1 = new int[m];
            for (int num1 = 0; num1 < m; num1++)
            {
                numArray1[num1] = 0;
            }
            for (int num2 = 0; num2 < a.Length; num2++)
            {
                int num6;
                numArray1[num6 = a[num2]] = numArray1[num6] + 1;
            }
            int num3 = 0;
            for (int num4 = 0; num4 < m; num4++)
            {
                for (int num5 = numArray1[num4]; num5 > 0; num5--)
                {
                    a[num3++] = num4;
                }
            }
        }

        private static void F()
        {
            throw new A();
        }

        public static int Factorial(int n)
        {
            if (n == 0)
            {
                return 1;
            }
            return (n * Example.Factorial(n - 1));
        }

        public static int Fibonacci(int n)
        {
            int num1 = -1;
            int num2 = 1;
            for (int num3 = 0; num3 <= n; num3++)
            {
                int num4 = num2 + num1;
                num1 = num2;
                num2 = num4;
            }
            return num2;
        }

        public static int Fibonacci(int n, int k)
        {
            if (n < (k - 1))
            {
                return 0;
            }
            if (n == (k - 1))
            {
                return 1;
            }
            int[] numArray1 = new int[n + 1];
            for (int num1 = 0; num1 < (k - 1); num1++)
            {
                numArray1[num1] = 0;
            }
            numArray1[k - 1] = 1;
            for (int num2 = k; num2 <= n; num2++)
            {
                int num3 = 0;
                for (int num4 = 1; num4 <= k; num4++)
                {
                    num3 += numArray1[num2 - num4];
                }
                numArray1[num2] = num3;
            }
            return numArray1[n];
        }

        public static int Fibonacci2(int n)
        {
            if ((n == 0) || (n == 1))
            {
                return n;
            }
            return (Example.Fibonacci2(n - 1) + Example.Fibonacci2(n - 2));
        }

        public static int Fibonacci3(int n)
        {
            if ((n == 0) || (n == 1))
            {
                return n;
            }
            int num1 = Example.Fibonacci3((n + 1) / 2);
            int num2 = Example.Fibonacci3(((n + 1) / 2) - 1);
            if ((n % 2) == 0)
            {
                return (num1 * (num1 + (2 * num2)));
            }
            return ((num1 * num1) + (num2 * num2));
        }

        public static int FindMaximum(int[] a)
        {
            int num1 = a[0];
            for (int num2 = 1; num2 < a.Length; num2++)
            {
                if (a[num2] > num1)
                {
                    num1 = a[num2];
                }
            }
            return num1;
        }

        private static void G()
        {
            try
            {
                Example.F();
            }
            catch (A a1)
            {
                Opus6.Console.WriteLine(a1);
            }
        }

        public static double Gamma()
        {
            double num1 = 0;
            for (int num2 = 1; num2 <= 0x7a120; num2++)
            {
                num1 += (1 / ((double) num2)) - Math.Log((num2 + 1) / ((double) num2));
            }
            return num1;
        }

        public static int GeometricSeriesSum(int x, int n)
        {
            int num1 = 0;
            for (int num2 = 0; num2 <= n; num2++)
            {
                int num3 = 1;
                for (int num4 = 0; num4 < num2; num4++)
                {
                    num3 *= x;
                }
                num1 += num3;
            }
            return num1;
        }

        public static int GeometricSeriesSum2(int x, int n)
        {
            int num1 = 0;
            for (int num2 = 0; num2 <= n; num2++)
            {
                num1 = (num1 * x) + 1;
            }
            return num1;
        }

        public static int GeometricSeriesSum3(int x, int n)
        {
            return ((Example.Power(x, n + 1) - 1) / (x - 1));
        }

        public static int Horner(int[] a, int n, int x)
        {
            int num1 = a[n];
            for (int num2 = n - 1; num2 >= 0; num2--)
            {
                num1 = (num1 * x) + a[num2];
            }
            return num1;
        }

        public static int Horner2(int[] a, int n, int x)
        {
            int num1 = a[n];
            for (int num2 = n - 1; num2 >= 0; num2--)
            {
                num1 = (num1 * x) + a[num2];
            }
            return num1;
        }

        private static void Merge(ComparableObject[] array, int pos, int m, int n)
        {
            ComparableObject[] objArray1 = new ComparableObject[m + n];
            int num1 = pos;
            int num2 = pos + m;
            int num3 = num2;
            int num4 = num2 + n;
            int num5 = 0;
            while ((num1 < num2) && (num3 < num4))
            {
                if (array[num1] < array[num3])
                {
                    objArray1[num5++] = array[num1++];
                }
                else
                {
                    objArray1[num5++] = array[num3++];
                }
            }
            while (num1 < num2)
            {
                objArray1[num5++] = array[num1++];
            }
            while (num3 < num4)
            {
                objArray1[num5++] = array[num3++];
            }
            for (num5 = 0; num5 < (m + n); num5++)
            {
                array[pos + num5] = objArray1[num5];
            }
        }

        public static void MergeSort(ComparableObject[] array, int i, int n)
        {
            if (n > 1)
            {
                Example.MergeSort(array, i, n / 2);
                Example.MergeSort(array, i + (n / 2), n - (n / 2));
                Example.Merge(array, i, n / 2, n - (n / 2));
            }
        }

        public static void One()
        {
            int num1 = 1;
            Opus6.Console.WriteLine(num1);
            Example.Two(num1);
            Opus6.Console.WriteLine(num1);
        }

        public static void One2()
        {
            int num1 = 1;
            Opus6.Console.WriteLine(num1);
            Example.Two2(ref num1);
            Opus6.Console.WriteLine(num1);
        }

        public static void One3()
        {
            Obj obj1 = new Obj();
            Opus6.Console.WriteLine(obj1.field);
            Example.Two3(obj1);
            Opus6.Console.WriteLine(obj1.field);
            Example.Three(ref obj1);
            Opus6.Console.WriteLine(obj1.field);
        }

        public static double Pi(int trials)
        {
            int num1 = 0;
            for (int num2 = 0; num2 < trials; num2++)
            {
                double num3 = RandomNumberGenerator.Next;
                double num4 = RandomNumberGenerator.Next;
                if (((num3 * num3) + (num4 * num4)) < 1)
                {
                    num1++;
                }
            }
            return ((4 * num1) / ((double) trials));
        }

        public static int Power(int x, int n)
        {
            if (n == 0)
            {
                return 1;
            }
            if ((n % 2) == 0)
            {
                return Example.Power(x * x, n / 2);
            }
            return (x * Example.Power(x * x, n / 2));
        }

        public static void PrefixSums(int[] a, int n)
        {
            for (int num1 = n - 1; num1 >= 0; num1--)
            {
                int num2 = 0;
                for (int num3 = 0; num3 <= num1; num3++)
                {
                    num2 += a[num3];
                }
                a[num1] = num2;
            }
        }

        public static int Sum(int n)
        {
            int num1 = 0;
            for (int num2 = 1; num2 <= n; num2++)
            {
                num1 += num2;
            }
            return num1;
        }

        public static void Three(ref Obj z)
        {
            z = new Obj();
            Opus6.Console.WriteLine(z.field);
        }

        public static void Two(int y)
        {
            y = 2;
            Opus6.Console.WriteLine(y);
        }

        public static void Two2(ref int y)
        {
            y = 2;
            Opus6.Console.WriteLine((int) y);
        }

        public static void Two3(Obj y)
        {
            y.field = 2;
            Opus6.Console.WriteLine(y.field);
        }

        public static void Typeset(int[] l, int D, int s)
        {
            int num1 = l.Length;
            int[,] numArray1 = new int[num1, num1];
            for (int num2 = 0; num2 < num1; num2++)
            {
                numArray1[num2, num2] = l[num2];
                for (int num3 = num2 + 1; num3 < num1; num3++)
                {
                    numArray1[num2, num3] = numArray1[num2, num3 - 1] + l[num3];
                }
            }
            int[,] numArray2 = new int[num1, num1];
            for (int num4 = 0; num4 < num1; num4++)
            {
                for (int num5 = num4; num5 < num1; num5++)
                {
                    if (numArray1[num4, num5] < D)
                    {
                        numArray2[num4, num5] = Math.Abs((int) ((D - numArray1[num4, num5]) - ((num5 - num4) * s)));
                    }
                    else
                    {
                        numArray2[num4, num5] = 0x7fffffff;
                    }
                }
            }
            int[,] numArray3 = new int[num1, num1];
            for (int num6 = 0; num6 < num1; num6++)
            {
                numArray3[num6, num6] = numArray2[num6, num6];
                for (int num7 = num6 - 1; num7 >= 0; num7--)
                {
                    int num8 = numArray2[num7, num6];
                    for (int num9 = num7; num9 < num6; num9++)
                    {
                        int num10 = numArray2[num7, num9] + numArray3[num9 + 1, num6];
                        if (num10 < num8)
                        {
                            num8 = num10;
                        }
                    }
                    numArray3[num7, num6] = num8;
                }
            }
            for (int num11 = 0; num11 < num1; num11++)
            {
                for (int num12 = num11; num12 < num1; num12++)
                {
                    Opus6.Console.Write(numArray3[num11, num12] + " ");
                }
                Opus6.Console.WriteLine();
            }
        }



        public class A : Exception
        {
        }

        public class Obj
        {
            public Obj()
            {
                this.field = 1;
            }


            public int field;
        }
    }
}

⌨️ 快捷键说明

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