zoukankan      html  css  js  c++  java
  • C#常见的算法面试题

    一、求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m


        //方法一,通过顺序规律写程序,同时也知道flag标志位的重要性。

    复制代码
    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;    
       }    
     
    复制代码

    二,有一个字符串 "I am a good man",设计一个函数,返回 "man good a am I"。

    复制代码
     
    static string Reverse()    
             {    
                 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;    
             }    
     
    复制代码

    三.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    复制代码
    class Program    
       {    
           static void Main(string[] args)    
           {    
           
               //有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?    
               //分解题目    
               //条件:四个数字1、2、3、4  ;三位数:百位、十位、个位    
               //要求:互不相同;无重复数字:每个数字在三位中只出现一次    
               //结果:多少个? 都是多少?    
           
               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();    
           
           }    
       }     
    复制代码

     选择一个6位数乘以一个3位数,得到一个结果。但不清楚6位数的两个数字是什么,而且结果中有一位数字也不清楚,请编程找出问好代表的数字,答案可能有多个

    复制代码

    表达式:12?56?*123 = 154?4987

                for (int a = 0; a < 10; a++)
                {
                    for (int b = 0; b < 10; b++)
                    {
                        for (int c = 0; c < 10; c++)
                        {
                            if ((120560 + a + b * 1000) * 123 == 15404987 + c * 10000)
                            {
                                Console.WriteLine(a);
                                Console.WriteLine(b);
                                Console.WriteLine(c);
                            }
                        }
                    }
                }

    复制代码

    1、1、1、2、3、5、8、13、21、34,....用C#递归写出算法,算出第30个数。

    复制代码
    using System;
    class Program
    {
       static in F(int i)
       {
           if(i<=0)
              return 0;
           else if(i>0 && i<=2)
              return 1;
           else return F(i-1) + F(i-2);
       }
       
       static void Main(string[] args)
       {
           int n = F(30);
           Console.WriteLine(n.ToString());
       }
    }
  • 相关阅读:
    React在componentDidMount里面发送请求
    React 术语词汇表
    React里受控与非受控组件
    React和Vue等框架什么时候操作DOM
    【LeetCode】79. Word Search
    【LeetCode】91. Decode Ways
    【LeetCode】80. Remove Duplicates from Sorted Array II (2 solutions)
    【LeetCode】1. Two Sum
    【LeetCode】141. Linked List Cycle (2 solutions)
    【LeetCode】120. Triangle (3 solutions)
  • 原文地址:https://www.cnblogs.com/qingfenglin/p/12074628.html
Copyright © 2011-2022 走看看