
田忌赛马续写
田忌和孙膑再次见面有一天,田忌和孙膑又见面了。
田忌看到了孙膑,就把他招呼过来,对他说:“上次多亏了你,给我出了一个好点子,否则我还不知道该怎么做呢。
这一回,你有什么需要我的,尽管说。
”孙膑说:“最近没什么事,以后再找你帮忙。
”孙膑带田忌来到赛马场,田忌问:“又是赛马
”孙膑回答:“没错。
”这时,齐威王来了,他笑了笑,对田忌说:“好久不见了,这次我们再来赛一场。
”一声锣响,比赛开始了。
齐威王的大臣为齐威王出了一个好主意,大臣说:“大王,您按上次他们赢你的顺序对他们。
”正好田忌也跟上回一样,结果两个人都出下等马,第一局,田忌输了。
中场休息时,田忌猜测齐威王也用了他的顺序,于是告诉了孙膑,孙膑说:“我也看出来了,齐威王用的正是上次我们赢他的出场顺序。
”田忌想了想,说:“下一局他会出中等马,我们怎么办
”两个人都陷入沉思。
突然,田忌想到,无论怎样,这一场都会输,他对孙膑说:“我们下一场想办法吧。
”孙膑说:“你跟我想的一样。
”第二局,田忌用上等马对齐威王的中等马,第二局赢了。
第三局,田忌用中等马队齐威王的上等马,这一局输了。
整场下来,田忌还是败给了齐威王。
田忌自己想了一套方案,孙膑听了说:“这套方案很好,下一场就用。
”另一边,齐威王的大臣说:“他们可能看出我们要用什么了,不妨我们换一种出场顺序。
”齐威王听了大臣的话,觉得大臣说得有道理,就采用了。
第二场比赛开始了。
第一局,田忌按方案出中等马探底,没想到齐威王换了顺序,出了上等马,这一局输了。
田忌想:这下只能随机应变了。
第二局,田忌猜测齐威王下一步会出下等马,就出了中等马,果然,田忌猜中了。
第三局,田忌只能出上等马,齐威王出的是中等马,这一局赢了。
田忌以三局两胜赢了齐威王。
这一次赛马,进一步增强了田忌和孙膑之间的友谊,他们只要一有空,就会在一起商量、讨论一些事情。
田忌赛马的道理
田忌常和齐威王(公元前356—320年在位)及诸公子以赛马赌博。
田忌的马有上、中、下三等;齐王的马也有上、中、下三等,但每一等都比田忌同等的马好,于是田忌屡赛屡输。
这次他俩又下了1000两黄金的赌注,田忌一筹莫展。
就在这时,孙膑对田忌说:“您尽管同他赛,我有办法让您赢。
” 比赛又开始了。
齐王令出上马,孙膑让田忌先出下马,给齐王舒舒服服、轻而易举地赢了第一场;然后齐王令出中马,孙膑让田忌出上马,经过激烈比赛,田忌的马赢了;最后齐王出下马,孙膑让田忌出中马,田忌的马又赢了。
3场比赛,田忌以2:1取胜,“卒得王千金”。
这告诉了人们一个道理:只有知己知彼,避敌锋芒,才能后发制人,以弱胜强。
田忌赛马的教案
其实你的算法很简单,就是让渊子的马按照速度按照从小到大排序,取前1\\\/3为从小到大的顺序,然后剩下的2\\\/3按照从大到小排序。
让对手的马按照从大到小排序。
这样你就能保证渊子赢了。
c语言田忌赛马问题
代码写起来比较麻烦,我就光说思路了。
首先读入的两个人马的速度,可以放在两个数组里边,因为马的匹数不一定,代可以用一个int指表示,然后等用户输入了匹数以后,拿malloc去申请内存。
然后要对两个数组进行排序,从大到小,如果你能保证输入速度的时候就已经是排好序的,这一步也可以省略;之后,咱拿两个下标来表示两人的i表示田忌,j表王;tj[0]就是田忌最快的那匹马的速度,qw[0]就是齐王最快的那匹马的速度,(这样明白不啊。
。
。
)然后i从0开始,拿tj[i]去和qw[j]比较,如果小于,j++,往后找,直到找见等于或大于的为止,等于就算平,大于的话算赢,都要给对一个计数变量进行累加;这样第一匹能赢的马就找到对手了,然后给i加1,并从j+1的位置继续找,重复上边的操作,直到j加到最大值为止;这时统计出来的能赢的马和能平局的马,和总数相减一下就能得出要输的马,再计算输赢就很简单了。
急求 田忌赛马 详细题解 freePascal
type arr=array[1..2000] of longint;var tian,qi:arr; ans:array[1..2000,1..2000] of longint; i,j,k,n:longint; procedure qs(left,right:longint;var a:arr); var t,mid,l,r:longint; begin l:=left;r:=right;mid:=a[(l+r) div 2]; while l<=r do begin while a[l]>mid do inc(l); while a[r]



