面试的一些算法题目

基础算法

1-2+3-4+5-6+......m 的算法
方法一:借鉴
static int F1(int m)
        {
            int sum = 0;
            bool flag = true;
            for (int i = 1; i <= m; i++)
            {
                if (flag)  //一次是默认是True,下下也为True   
                    sum += i;
                else
                    sum -= i;
                flag = !flag;
            }
            return sum;
        }
方法二:借鉴
static int F2(int m)
        {
            int sum = 0;
            for (int i = 1; i <= m; i++)
            {
                if (i % 2 > 0)  //即为奇数   
                    sum += i;
                else
                    sum -= i;
            }
            return sum;
        }
方法三:原创
static int F3(int m)
        {
            int sum = 0;
            if (m % 2 == 0) //*判断m的奇偶性,
                return sum = 0 - m / 2;//*如果是偶数,就是0-m/2;
            else
                return sum = (m + 1) / 2;//*如果是奇数就是(m+1)/2
        }

字符串 "I am a good man",设计一个函数,返回 "man good a am I"。
方法一:借鉴
static string Reverse1()
        {
            string s = "I am a good man";
            string[] arr = s.Split(' ');
            string res = "";
            for (int i = arr.Length - 1; i >= 0; i--)
            {
                res += arr[i];
                if (i > 0)
                    res += " ";
            }
            return res;
        }
方法二:原创
static string Reverse2()
        {
            string s = "I am a good man";
            string[] arr = s.Split(' ');
            string value = string.Empty;
            int count = arr.Length - 1;
            while (count > -1)
            {
                value += arr[count] + " ";
                count--;
            }
            return value;
        }

//条件:给出四个数字1、2、3、4 ;组成三位数:百位、十位、个位   
//要求:组成的三位数不可以重复;每个数字在任意三位数中不可重复出现 
//结果:列举和统计

方法一:借鉴

class Program
    {
        static void Main(string[] args)
        {
            int count = 0; //统计个数   
            for (int bw = 1; bw <= 4; bw++)
            {
                for (int sw = 1; sw <= 4; sw++)
                {
                    if (sw != bw)  //很显然,只有百位和十位不同的情况下才能谈个位。   
                    {
                        for (int gw = 1; gw <= 4; gw++)
                        {
                            if (gw != sw && gw != bw)   //百位用过的,十位就不能用;百位和十位都用过的,个位就不能用   
                            {
                                count++;
                                Console.WriteLine("{0}{1}{2}", bw, sw, gw);
                            }
                        }
                    }
                }
            }
            Console.WriteLine("一共有{0}个", count);
            Console.Read();
        }
}
方法二:原创
 class Program
    {
        static void Main(string[] args)
        {
            int[] marks = new int[] { 1, 2, 3, 4 };//可以自动生成
            int bw = 0, sw = 0, gw = 0;
            int count = 0;//计数
            foreach (int b in marks)
            {
                bw = b;//把值给到百位
                foreach (int s in marks)
                {
                    if (s == bw)
                        continue;
                    else
                        sw = s;//把值给到十位
                    foreach (int g in marks)
                    {
                        if (g == bw || g == sw)
                            continue;
                        else
                            gw = g;//把值给到个位
                        Console.WriteLine("{0}{1}{2}", bw, sw, gw);//输出
                        count++;
                    }
                }
            }
            Console.WriteLine("一共有{0}个", count);
            Console.Read();
        }
}

猜你喜欢

转载自blog.csdn.net/Carrollking/article/details/80942802
今日推荐