贪心算法思想和例题讲解 贪婪的商人总是想获得最大的利润,每一次交易都想获得最大利润,而不为长远考虑。定义贪婪算法:总是做出在当前最好的选择。而不是从整体上考虑,它所做出的仅仅是在局部上的最优解。所以贪婪算法必须保证无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。步骤把求解的问题分成若干个子问题;对每一子问题求解,得到子问题的局部最优解;把子问题的解局部最优解合成原来解问题的一个解。例...
设计模式基本概述 设计模式的概念设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。我们可以将设计模式理解为我们经常使用的数学公式,对于求解一类问题,我们套用这个数学公式,就可以求出正确答案。为什么要使用设计模式...
动态规划的经典案例讲解 不懂动态规划定义或者思想的可以看这->动态规划思想动态规划主要解决两类问题:1.最优子结构性质的问题(即它的最优解可以从其子问题的最优解来有效地构建)2.相互重叠的子问题那么就围绕这两类问题,看一些经典的动态规划的案例!案例一:爬楼梯问题(最优子结构性质问题)那如何应用动态规划的思想求第N阶台阶的可能呢?1.首先拆分问题:第N阶台阶可能是从第N-1台阶上去的,也可能是从第N-2...
动态规划思想和例题讲解 定义动态规划(英语:Dynamic programming,简称 DP),通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。其思想非常简单,我们需要解其不同部分(即子问题),再根据子问题的解以得出原问题的解。步骤1.拆分问题2.找到子问题之间的关系(类似写出推导公式)3.保留子问题的最优解例题看完定义和步骤后,基本不理解,然后根据题来理解:题目:最大子序和解法1:暴力法...
回溯算法思想和例题讲解 定义回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就 “回溯” 返回,尝试别的路径。回溯算法类似于我们面对岔路口时,不知如何选择,我们可以一条路一条的路的走,如果走到死路,则返回到岔路口,继续走下一条路,直至到达我们的目的地。例题——生成括号问题先上代码:public static List<String> gener...
C# Socket网络编程 服务器和客户端 服务器端://1.创建socket (1)本地的网络(2)采用流形式(3)使用Tcp协议Socket tcpSever =new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//2.绑定IP地址和端口号 10.128.55.3IPAddress ipAddress=new IPAd...
下载Resharp后 代码出现绿色蓝色波浪线等警告 下载Reshaper之后,发现很多代码下面会出现警告的波浪线,绿线蓝线波浪线等警告,对于一个有强迫症的程序猿来说,这样的代码看着太恶心了!所以研究了一下,找到了解决的方法。之所以出现波浪线的问题,是因为我们编写的代码不符合编辑器的要求,但是我们的代码是没有错误的,注意是错误。所以我们要更改配置器的一些配置,以满足符合我们的编码习惯。##1.打开ReSharper下的Manage Options...
C# StringBuilder 在Java中,我们可以使用stringbuffer来应对频繁更改字符串的问题,在C#中,同样也有StringBuilder,两者的功能十分类似。StringBuilder的创建StringBuilder sb = new StringBuilder("xxx");//使用构造器进行创建StringBuilder sb1=new StringBuilder(20);//创建一个空的String...
C#string常用方法总结 //CompareTo比较方法string s = "b";Console.WriteLine(s.CompareTo("a"));Console.WriteLine(s.CompareTo("b"));Console.WriteLine(s.CompareTo("c"));//结果为int 类型 以s为基础,字母顺序在s前面的为1,后面的为-1,相等为0./*10-1*/...
C#泛型类和泛型方法 泛型可以理解为广泛的类型,或者不确定的类型,也就是说允许我们编写一个可以与任何数据类型同时运行,且不报错的方法或者类。泛型类泛型类是指这个类的某些字段的类型是不确定的,只有在构造的时候才能确定下的类。泛型类示例class Program { static void Main(string[] args) { MyClass&l...
C#List列表 当我们使用了很多类型相同的数据的时候,我们通常使用数组来对这些数据进行存储,但是这样有一个缺点,就是数组的大小是固定的,如果我们大小可变的数组,那么我们就需要List列表了,同时列表可以很方便进行的添加数据,删除数据等操作!列表的创建List<int> aList=new List<int>();//第一种创建方式var bList=new List<int&g...
C# 接口Interface 定义C#中的接口和我们日常生活中使用的硬件接口的概念其实类似,日常生活中接口的形状决定了能插入这个接口的物体的形状,所以C#中接口决定了实现该接口的类或者结构在形式上保持一致!声明的实例interface IMyInterface{ void Method();}这是一个接口的简单实例,下面有一些注意事项:1.接口使用 interface 关键字声明,它的声明和类比较类似。...
C# 派生类的构造函数 我们需要经常使用构造函数,因为构造函数在类的对象声明的时候就可以完成对变量进行初始化。同时我们也使用派生类继承基类的一些字段和方法。那么在派生类的构造函数的执行顺序是什么样的呢?示例class Program{ static void Main(string[] args) { Son son=new Son(); }}c...