动态规划的核心是最优子结构原理(Optimal substructure), 最优子结构表示如下: 设 问题( C, N={1,2,...,n}, {wi}i∈N, {vi}i∈N ) 的最优解是 (y1,y2,...,yn), 那么 (y2,...,yn)是 问题( C-w1, N={2,...,n}, {wi}i∈N, {vi}i∈N ) 的最优解。动态规划经典算法有:1. 数字三角形问题2. 最长公共子序列问题3. 字符串的编辑距离… …1. 数字三角形问题 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5找出一条从顶点至底部的路径,使该路径经过的数字总和最大(每个数只能到达. Read More
posted @ 2011-09-17 22:02 Chen. Views(199) Comments(0) Diggs(0) Edit
这张图是一个递归的例子, 很有中国特色。递归经典算法:1. Hanoi问题2. 八皇后问题3. 归并排序 … …1. Hanoi问题:/** * @(#)Hanoi.java * @ 汉诺塔问题 * * @author Chen. * @version 1.00 2011/6/10 */public class Hanoi { public Hanoi() { } //将最上面的盘从X柱移到Y柱 public void move(char X,char Y){ System.out.println(X+"----->"+Y); } //将上面的n个盘从X柱通过Y柱移到 Read More
posted @ 2011-06-21 20:30 Chen. Views(404) Comments(0) Diggs(0) Edit
最近在网上看到这个设计模式, 感觉很赞 :)写代码的时候, 经常会遇到抛出NullReferenceException的情况, 举个最简单的例子:public class Student{ public void Method() { Console.WriteLine("Chen."); }}public class Test{ public static void Main(string[] args) { Student student = new Student(); student.Method(); //Chen. student=null; student.m Read More
posted @ 2011-06-03 16:08 Chen. Views(417) Comments(0) Diggs(1) Edit
看到一些同学的课程设计中, Admin登陆后页面跳转到Main.aspx, 即使不知道Admin的密码时, 直接在浏览器中输入localhost:xxx/XXX/XXX/Main.aspx也可进入Admin页面, 这个bug是个问题。第一个想到的解决方法就是为Main.aspx在加载时添加如下逻辑:判断用户名是否已在session中, 如在, 则继续, 如不在, 则跳至Login.aspx。问题是如果有很多类似Main.aspx页面或者更进一步, 需要为每个页面添加一些信息时呢?上面的方法是可以解决问题, 但是如果能够用更本质的方法解决这一类问题总是更好的选择, Http PipeLine就是 Read More
posted @ 2011-06-01 21:14 Chen. Views(882) Comments(0) Diggs(1) Edit
PetShop4的结构是UI、BLL、DAL。DAL将针对Item、Product、Category、Order等表的select、insert等操作分别封装在对应类内,BLL以接口引用工厂生成的具体DAL对象,并且获取UI传来的与数据库交互相关的参数以parameter的形式传给这些对象,完成数据库操作。(以接口引用的好处是可以无视DAL的具体实现,降低耦合)PetShop4的DAL没有使用ORM,因此代码中用了大量const string保存SQL语句和各种parameters。考虑ORM,利用LINQ to SQL实现,把数据表拖进设计器,然后生成代码。用泛型实现DAL可以将Item、P Read More
posted @ 2011-05-30 19:33 Chen. Views(320) Comments(0) Diggs(1) Edit
委托(delegate)是一个类,内部封装了一个或多个方法。定义委托需要制定方法签名。delegate C MyDelegate(A a,B b);此委托可以封装多个“接收A、B类型参数且返回C类型的方法“。利用委托可以向方法中注入代码,委托是匿名方法的基础,因为匿名方法在动态地注入代码的时候,编译器会自动生成委托对象,Lambda表达式就是一个匿名方法。系统定义了Action<T>委托和Func<T>委托:Action<T1,T2>表示接收T1,T2两个泛型参数,Action返回类型只能是void;Func<T1,T2,TResult>表示接收 Read More
posted @ 2011-05-26 22:15 Chen. Views(1584) Comments(0) Diggs(3) Edit