最新评论

风在山路吹 2009-10-14 15:51
谢谢楼主, 果然能用~ 太神奇了!
coroyi 2009-09-25 16:02
我把那个组建在添加/删除里卸掉了,然后把C盘下隐藏的MSOCache文件夹删了,office2007就可以装了。 不删掉MSOCache,安装程序还是强制要hash值一样的文件才可以。
Farmer 2009-09-09 13:16
这题我也做了一下,2种 1 [url=http://www.cnblogs.com/farmer/archive/2009/09/08/1562514.html]http://www.cnblogs.com/farmer/archive/2009/09/08/1562514.html[/url] 2 [url=http://www.cnblogs.com/farmer/archive/2009/09/08/1562812.html]http://www.cnblogs.com/farmer/archive/2009/09/08/1562812.html[/url]
Joyaspx 2009-09-01 19:08
@文明的天空 你可以这么理解,17个人围成一圈,其中一人从1开始报数,谁念到3的倍数就自动退出这个圈,留下的人接着报数,直到剩下最后一个人为止。
文明的天空 2009-08-31 09:00
单看题目,好像说的不够明白! 是不是:P1:1,P2:2,P3:3,P3退!     P1:1,P2:2,P4:3,P4退!     。。。。 好像怪怪的!
ephon 2009-08-30 23:42
17个人围成一圈,从第一个人开始报数,报到3的退出,一直到剩下最后一个人 1、17个人 是一个初始状态 2、围成一圈 是一个开关设置 3、从第一个人开始报数 是一个开关设置 4、报到3的退出 3是一个开关设置 5、一直到剩下最后一个人 最后一个人是一个开关设置 .... 如果OO,你就直接 PsnQueue pq = new PsnQueue(); pq.PsnCount = 17; pq. pq. pq. pq. 。。。。 什么的之后,执行pq.start(); 然后获得pq.GetQueryInnerOrder()。。。 对结果你想怎么处理都行,不一定是console write
Joyaspx 2009-08-30 13:23
@我写的不是代码 是寂寞 [quote]我写的不是代码 是寂寞: 我觉得这个段代码依然不算OO 首先,类的内部成员不应该public,这破坏了封装,当然我想lz可能只是想做个题,所以没有计较那么多,但依当先的代码来看,这个类实际上是一个结构体。 对于一个Person对象的操作都是在Main()和Remove()里面进行的,我觉得这跟面向过程的编程的模式差不太多。像Remove这个方法,其实可以放到Person()类中,或者你再建立一个PersonQueue的类,这个类里面放对于Person的操作和一个Person的List,比如那个对于.next的判断操作。 就是说在Main里面看起来像这样:PersonQueue.Initiliaz() PersonQueue.Remove()。这样的话,你的Person类,或者PersonQueue类才可以被重用,这才比较符合基本的OO精神。 拙见,仅供参考。[/quote] 你的意见提得很好,Remove()是封装在Person类里面比较好,初始化数据也应该借助一个管理类(或者工厂类)来完成,就像你说的PersonQueue类。
一过 2009-08-27 17:38
我是来学习的,哈哈,看的晕乎首,哎,面向对象啊
Nick Wang (懒人王) 2009-08-27 17:12
强扭的瓜不甜,用OO不见得就好
happy_ud 2009-08-27 17:08
LZ本来想秀一下自己会搞类了,结果成为大家拿出来批斗的反面教材
OOLi 2009-08-27 14:30
这里只用了封装啊,那继承,多态呢?所以思想仍旧不够OO,不管是pulick还是private,关键问题是用面向对象的思想解决问题啊,
OOLi 2009-08-27 14:25
看这个:http://www.cnblogs.com/hongyin163/archive/2009/08/27/1555012.html
星~无敌 2009-08-27 13:40
挺牛的
韦恩卑鄙 2009-08-27 10:52
很难弄清楚的是 判断count%3 s 的究竟是这个游戏 在做 还是人在做 我倾向是游戏在作
被偷De贼 2009-08-27 10:52
[quote]Galactica: 搞个Person类出来,就叫着OO了吗? 要抽象的不是Person,而是业务逻辑. 当这个业务逻辑建立好后,我们可以随意更改报数规则,退出规则,是人报数,还是狗叫等等. 显然,使用目前已经成熟的工作流来解决这个问题是最佳方案.[/quote] 支持。1,2,3点。 偶工作流不熟。。。略过-):
Martin_xiao 2009-08-27 10:47
[quote]我写的不是代码 是寂寞: 我觉得这个段代码依然不算OO 首先,类的内部成员不应该public,这破坏了封装,当然我想lz可能只是想做个题,所以没有计较那么多,但依当先的代码来看,这个类实际上是一个结构体。 对于一个Person对象的操作都是在Main()和Remove()里面进行的,我觉得这跟面向过程的编程的模式差不太多。像Remove这个方法,其实可以放到Person()类中,或者你再建立一个PersonQueue的类,这个类里面放对于Person的操作和一个Person的List,比如那个对于.next的判断操作。 就是说在Main里面看起来像这样:PersonQueue.Initiliaz() PersonQueue.Remove()。这样的话,你的Person类,或者PersonQueue类才可以被重用,这才比较符合基本的OO精神。 拙见,仅供参考。[/quote] 赞同“我写的不是代码 是寂寞”的观点
郑宇 2009-08-27 10:39
@winkingzhang 很强大,我很欣赏。呵呵。
韦恩卑鄙 2009-08-27 10:31
[code=csharp] public class Person { /// <summary> /// 左手的人 /// </summary> public Person LeftHand { get { throw new System.NotImplementedException(); } set { } } /// <summary> /// 右手的人 /// </summary> public ConsoleApplication11.Person RightHand { get { throw new System.NotImplementedException(); } set { } } /// <summary> /// 目前所在的桌子 /// </summary> public RoundTable CurrentRoundTable { get { throw new System.NotImplementedException(); } set { } } /// <summary> /// 自己的名字 /// </summary> public string Name { get { throw new System.NotImplementedException(); } set { } } /// <summary> /// 离开本桌 -&gt;把左手和右手的人互相连接 /// </summary> public void QuitTable() { throw new System.NotImplementedException(); } } [/code]
韦恩卑鄙 2009-08-27 10:31
写了一个面向对象的设计 只有设计哦 [code=csharp] public class RoundTable { /// <summary> /// 目前数的总数 /// </summary> private int currentIndex; /// <summary> /// 整个圆环第一个人 /// </summary> public Person FirstPerson { get { throw new System.NotImplementedException(); } set { } } /// <summary> /// 满足几的倍数退出? /// </summary> public Predicate QuitSeed { get { throw new System.NotImplementedException(); } set { } } /// <summary> /// 输出流 可以指定为http/console /// </summary> public System.IO.Stream OutputStream { get { throw new System.NotImplementedException(); } set { } } /// <summary> /// 生成人物列表 /// </summary> public void GainPerson(int Count) { throw new System.NotImplementedException(); } /// <summary> /// 清除所有游戏状态 currentIndex 和firstperson /// </summary> public void Clear() { throw new System.NotImplementedException(); } /// <summary> /// 开始游戏 /// </summary> public void BeginGame() { throw new System.NotImplementedException(); } } [/code]
winkingzhang 2009-08-27 10:25
[code=csharp] class Program { static void Main(string[] args) { Chain c = new Chain(); c.BuildPerson(17); c.CountPerson(); Console.WriteLine(string.Format("Left person [{0}], Count [{1}]", c.CurrentPerson.Id, c.CurrentPerson.CountNumber)); Console.ReadLine(); } } public class Chain { public Person CurrentPerson { get; set; } public void BuildPerson(int count) { if (count < 2) throw new ArgumentException("Need more than 2 person in chain.", "count"); CurrentPerson = new Person(this); Person temp = CurrentPerson; for (int i = 2; i <= count; i++) { Person p = new Person(this, temp, null, i); temp.Next = p; temp = p; } temp.Next = CurrentPerson; CurrentPerson.Previour = temp; } public void CountPerson() { CurrentPerson.StartCount(); } } public class Person { public Person(Chain owner) : this(owner, null, null, 1) { } public Person(Chain owner, Person prev, Person next, int id) { OwnerChain = owner; Previour = prev; Next = next; Id = id; } public int Id { get; set; } public Chain OwnerChain { get; set; } public int CountNumber { get; set; } public Person Next { get; set; } public Person Previour { get; set; } public void StartCount() { this.CountNumber = 1; this.Next.CountNumber = this.CountNumber + 1; Console.WriteLine("I am [1], Count [1]"); this.Next.DoCount(); } private void DoCount() { OwnerChain.CurrentPerson = this; string msg = string.Format("I am [{0}], Count [{1}]", this.Id, this.CountNumber); Person next = this.Next; if (next != null && next.Next != next) { next.CountNumber = this.CountNumber % 3 + 1; if (this.CountNumber == 3) { msg += "\t==>Quit"; this.Quit(); } Console.WriteLine(msg); next.DoCount(); } } private void Quit() { Previour.Next = Next; Next.Previour = Previour; this.Next = null; this.Previour = null; OwnerChain = null; } } [/code]
郑宇 2009-08-27 10:19
输出的结果不够有说服力。 每个人报数,应该在每一次退出一个人后,再从1开始。 这样就需要呈现的结果应该是: 人1, 人2, 人3, 人4, 人5, 人6, 人7, 人8, 人9, 人10, 人11, 人12, 人13, 人14 ============================================ 人1 : 1, 人2 : 2, 人3 : 3 ==> 人3退出。 人4 : 1,人5 : 2,人6 : 3 ==> 人6退出。 人7 : 1,人8 : 2,人9 : 3 ==> 人9退出。 人10 : 1,人11 : 2,人12 : 3==> 人12退出。 人13 : 1,人14 : 2,人1 : 3==> 人1退出。 人2 : 1, 人4:2, 人5 : 3 ==> 人5退出。 人7 :1, 人8:2, 人10:3 ==>人10退出。 人11 :1, 人13:2, 人14:3 ==>人14退出。 人2:1, 人4:2, 人7:3 ==>人7退出。 人8:1, 人11:2,人13:3 ==>人13退出。 人2:1, 人4:2, 人8:3 ==>人8退出。 人11:1, 人2:2, 人4:3 ==>人4退出。 人11: 1,人2:2, 人11:3 ==>人11退出。 人2。 这样,信息就比较齐全了。
eaglet 2009-08-27 10:13
@韦恩卑鄙 是的 LinkedList 是双向循环链表,我前段时间看了它的代码才知道
韦恩卑鄙 2009-08-27 10:07
有多少人知道 linklist 表面上是双向链表 其实是双向循环链表的
adfag 2009-08-27 10:00
但是我按照你说的方法 结果还是那一项未找到
阿龍 2009-08-27 09:57
一切皆对象。一个字母A,不是对象那是什么。。。
boboism 2009-08-27 09:49
看上去更像是用面向对象语言写的非面向对象思想,跟用C写struct好像最大的分别就是用了属性
陶发辉 2009-08-27 09:31
不是写个Class就是OO了,我觉得如果你使用面向对象的话,就应该把类定义成 public class person { public person Prev { get; set; } public person Next { get; set; } public int Val { get; set; } public person() { } Public void Out() { if(Val%3==0) { Prev.Next=Next; Next.AddVal(); //...... } //...... } Public void AddVal() { Val--; if(Next.Val>1) { //...... Next.Val--; } //...... } }
生慧 2009-08-27 09:29
[quote]Galactica: 搞个Person类出来,就叫着OO了吗? [/quote] 这句话说的很好
Q.Lee.lulu 2009-08-27 09:21
[quote]Gray Zhang:经典约瑟夫环,数据结构的习题……我还是认为这样的问题不需要强求OO,解出来,代码清晰就行[/quote]
DiggingDeeply 2009-08-27 09:09
这不是经典的国产魔比斯环吗?
kenny.guo 2009-08-27 09:07
oo了,呵呵
陈根发的BLOG 2009-08-27 08:51
还缺少一个 圈的对象
沐枫 2009-08-27 08:46
建议楼主听取楼上的意见,重做一次.
Galactica 2009-08-27 08:41
搞个Person类出来,就叫着OO了吗? 要抽象的不是Person,而是业务逻辑. 当这个业务逻辑建立好后,我们可以随意更改报数规则,退出规则,是人报数,还是狗叫等等. 显然,使用目前已经成熟的工作流来解决这个问题是最佳方案.
机枪兵 2009-08-27 08:40
确实觉得建立链接和退出链时的方法应该封装到Person中去,如果只是简单操作的话,如果是复杂的操作则增加一个辅助类,像 我写的不是代码 是寂寞 说的那样。
懒登陆了 2009-08-27 08:25
[quote]我写的不是代码 是寂寞: 我觉得这个段代码依然不算OO 首先,类的内部成员不应该public,这破坏了封装,当然我想lz可能只是想做个题,所以没有计较那么多,但依当先的代码来看,这个类实际上是一个结构体。 ...quote] 你可能不知道.NET 3.0支持的写法 public person Prev { get; set; } public person Next { get; set; } public int Val { get; set; }
10.06 2009-08-27 08:25
dome?是demo吧
eaglet 2009-08-27 08:24
Person 似乎应该有一个退出和报数的方法和听旁边的报数的事件 Main 函数应该只发一个开始指令和输出一下最后剩下的那个人,其他什么都不做。这样感觉会比较OO一些。 不过约瑟夫环的解法有数学公式可以直接解出来的,采用面向对象的思路效率其实很低。不过从题目的考察点来看主要还是想考察对OO思想的理解。
JustinHuang 2009-08-27 08:23
这不一线性列表吗?
冬之心 2009-08-27 08:12
你这个person类就只是个数据结构 并没有多么的OO啊 呵呵
我写的不是代码 是寂寞 2009-08-27 07:50
我觉得这个段代码依然不算OO 首先,类的内部成员不应该public,这破坏了封装,当然我想lz可能只是想做个题,所以没有计较那么多,但依当先的代码来看,这个类实际上是一个结构体。 对于一个Person对象的操作都是在Main()和Remove()里面进行的,我觉得这跟面向过程的编程的模式差不太多。像Remove这个方法,其实可以放到Person()类中,或者你再建立一个PersonQueue的类,这个类里面放对于Person的操作和一个Person的List,比如那个对于.next的判断操作。 就是说在Main里面看起来像这样:PersonQueue.Initiliaz() PersonQueue.Remove()。这样的话,你的Person类,或者PersonQueue类才可以被重用,这才比较符合基本的OO精神。 拙见,仅供参考。
好俊的功夫啊 2009-08-27 07:17
汗,怎么都这么晚
Henry Liang 2009-08-27 02:59
@Jeffrey Zhao 老赵果然严格啊!
Jeffrey Zhao 2009-08-27 01:20
你那Person类不该小写名称的……
Gray Zhang 2009-08-27 00:48
经典约瑟夫环,数据结构的习题……我还是认为这样的问题不需要强求OO,解出来,代码清晰就行
ffia 2009-07-04 23:05
按你的这种方法,我安装了,PS CS4还是不认我的X1950GT显卡。
吃苹果的猪 2009-02-07 00:56
谢谢
刚好遇到这个问题了
电视剧在线网 www.tvk6.cn 2009-01-12 20:50
电视剧在线网 www.tvk6.cn
阿Ray 2008-10-28 16:36
谢谢!