
2009年6月30日
代码写的比较粗糙 各位看官凑合着看看
两层循环搞定 代码写的不算面向对象 用了class但用在数据结构上了
话说我真是老了 一个非递归搜索写了一个小时

Code
class Program
{
class Node
{
public Node _last;
public int _num;
public int _sum;
public int _count;
public Node(Node last, int num)
{
_last = last;
_num = num;
_sum = last._sum + num;
_count = last._count + 1;
}
public Node(int min)
{
_last = null;
_num = min;
_sum = 0;
_count = 0;
}
}
static void printsplit(int max, int min, int n, int sum)
{
List<Node> collection = new List<Node>();
collection.Add(new Node(min));
int i = 0;
while (i < collection.Count)
{
Node current=collection[i];
if (current._count == n - 1)
{
Console.Write(sum - current._sum + " ");
while (current._last!=null)
{
Console.Write(current._num.ToString()+" ");
current = current._last;
}
Console.Write("\n");
i++;
continue;
}
for (int j = current._num; j < max && current._sum + j * (n - current._count) <= sum; j++)
{
collection.Add(new Node(current, j));
}
i++;
}
}
static void Main(string[] args)
{
printsplit(5, 1, 3, 5);
}
}
posted @
2009-06-30 13:28 winter-cn 阅读(1861) |
评论 (13) |
编辑

2009年5月16日
摘要: 一般来说大家比较熟悉的面向对象方式是基于类的面向对象,声明一个类,然后在根据类声明的描述去创建对象,通过类与类之间的继承和组合关系来复用代码。而JS的设计采用了一种完全不同的思路。
阅读全文
posted @
2009-05-16 17:33 winter-cn 阅读(1297) |
评论 (4) |
编辑

2009年4月30日
摘要: 看了两篇文章
今天碰到一道比较有趣的面试题,大家来探讨一下。
有感于--"今天碰到一道比较有趣的面试题,大家来探讨一下。"
以及各位的评论,实在忍不住凑个热闹。
这道"有趣"的面试题是:甲乙两地相距100公里,有一辆火车以每小时15公里的速度离开甲地直奔乙地,另一辆火车以每小时20公里的速度从乙地开往甲地。如果有一只鸟,以30公里每小时的速度和两辆火车同时启动,从甲地出发,碰到另一辆车后返回,依次在两辆火车来回飞行,直到两辆火车相遇,请问,这只小鸟往返了多少次?
阅读全文
posted @
2009-04-30 00:58 winter-cn 阅读(1926) |
评论 (29) |
编辑

2009年4月15日
摘要: 最近跟一些朋友讨论关于工厂模式的一些东西,觉得很有必要写篇东西把抽象工厂的应用方法写清楚。GoF在抽象工厂一章中没有花很多篇幅在如何应用抽象工厂上,希望本文理解抽象工厂能起到一点作用,能让网络上少一些诸如"工厂用来重构switch的言论",若能对各位实际开发有点启发,则非常荣幸。
阅读全文
posted @
2009-04-15 21:12 winter-cn 阅读(1413) |
评论 (26) |
编辑

2009年2月14日
摘要: 相信大家比较熟悉使用Silverlight的User Control,在VS2008的Silverlight插件中,可以通过添加新项(Add new Item)创建一个User Control,而且Silverlight在网页中嵌入的本身就是一个User Control。
本文中讲的是如何开发Customized Control,Customized Control是与User Control完全不同的,Customized Control是继承或者间接继承System.Windows.Controls.Control的,而User Control必须继承System.Windows.Controls.Control.UserControl。Customized Control更接近于Silverlight本身提供的Button、CheckBox等Control, User Control则比较类似这些原生Control的组合体。
我希望本文能让更多朋友理解Silverlight,从应用开发层面深入到库开发和组件开发。
阅读全文
posted @
2009-02-14 04:00 winter-cn 阅读(1484) |
评论 (5) |
编辑

2008年12月14日
摘要: 相信所有ASP.NET程序员对GridView都不陌生,但是FormView就很少有人用了,这里就向一些初学.NET的朋友介绍一下FormView的一些小技巧,值得特别指出的是,这些技巧都不适合大中型网站(很适合应付一些XXX系统之类的作业......)。如果你想三层结构、ORM、AJAX什么的,可以直接忽略本文。直白地说,偷懒专用。
阅读全文
posted @
2008-12-14 22:30 winter-cn 阅读(711) |
评论 (4) |
编辑

2008年12月3日
摘要: 缓动可能一直是web开发中比较令人头疼的东西,其中最困难的就是缓动公式的选取,一般大家会喜欢用三角函数,但是三角函数没有参数可以控制曲线形状,所以我做了这个工具,自动生成三次函数缓动公式。
阅读全文
posted @
2008-12-03 10:37 winter-cn 阅读(2097) |
评论 (23) |
编辑

2008年11月18日
如果你要把一只猫卖给一个计算机专家,千万不要说它有多聪明多可爱,而要说,这是一只面向对象的猫。这是程序员对程序员的揶揄。
面向对象渗透到软件的各个领域,既然找不到银弹,这颗铜子弹成了我们对抗人狼的最佳武器。
在这样的世界里,你有没有想过,什么是面向对象呢?
如果你习惯性地说:继承、封装和多态,那么请你继续读完这篇随笔吧,它会带你认识一个真实的OO
我想提及面向对象之前,应该先搞明白什么是对象。《面向对象分析与设计》(Grandy Booch)中提到,对象是一个朴素的概念,约一岁以后,人会培养出一种对象概念的能力。从人类的认知角度来说,对象应是以下之一
- 可触摸或可见的东西
- 可被理性理解的东西
- 可进行想像或施加动作的东西
在英文中Object是一个应用广泛的词,它的出现早于程序语言出现之前,我想用中文中一个最适合的词来翻译,应该是"东西"而非"对象",当然有点太口语化了。Grandy Booch接下来还提到,现实生活中的对象不是软件开发中唯一感兴趣的对象,另一些重要的对象是设计过程的产物。最后的总结是:对象具有状态、行为、和标识。
对象具有状态、行为、和标识这三点是非常重要的,这是面向对象大师Grandy Booch对朴素对象概念的非常精确的概括。
《面向对象编程导论》(Ian Graham)中对面向对象有这样描述:一些作者已经强调了面向对象程序设计和面向数值程序设计的区别。MacLenna(1982)指出,值(例如数字17)是应用式的和只读的,他们总是抽象的。对象(例如实例)在一定范围内存在,可以被创造、撤销、共享和更新。数值是引用透明的,引用它的一切事情将使用同样的数值。
从这一段我们可以看出,与"对象"相对的并非"过程",而是"值"。值和对象最显著的区别正是Booch总结的3点,状态、行为、和标识。举一个例子,3是一个值,苹果是一个对象。苹果具有状态,它可能已经烂了,或者还没熟;苹果也有行为,它可以被削皮,可以被咬一口,也可以变烂;标识保证了,苹果是唯一的,你无法在世界上找到任何一个其它苹果,使得它跟这个苹果是“同一个苹果”。而对值来说并非如此,3就是3,是没有状态的;3也是不可改变的,你只能由3得到一个新的值4,却没法把任何一个3变成4;值是不需要标识的,世上所有3都是相同的,没有任何区别。
在这种朴素地认识下,我想可以分析一下C++对象模型的设计:用内存中连续的一段存储一个对象的状态,这样可以将它们的地址作为标识,将对象分类并将他们的行为以成员函数的形式体现
(未完待续)
posted @
2008-11-18 00:31 winter-cn 阅读(244) |
评论 (5) |
编辑

2008年8月23日
摘要: 函数递归调用是很常见的做法,但是它往往是低效的,本文探讨优化递归效率的几个思路。包括尾递归优化、动态规划算法和备忘录、展开递归函数以及组合数学方法解递归。这里只是一个简单的介绍,每种方法背后都有大量的内容。
阅读全文
posted @
2008-08-23 01:34 winter-cn 阅读(2401) |
评论 (16) |
编辑