其实你的算法很简单,就是让渊子的马按照速度按照从小到大排序,取前1/3为从小到大的顺序,然后剩下的2/3按照从大到小排序。
让对手的马按照从大到小排序。
这样你就能保证渊子赢了。
我调试了一下,需要把两层for循环里面if语句里面的执行体
i++;j++;
continue;
把这两句改成一句:
break;
因为比如a[3]>b[6],那么接下来我们只需要从i=4开始判断就行了,跳出当前j循环,就是从i=3进入到i=4。
而如果像原来那样都加1,则当(j+1)+1>=n时很有可能跳到(i+1)+1=5上去。并且就算跳到i=4上,那么j也不是从0开始了,而是从半路的6+1+1=8开始了。
我的程序,题目给的五个样例都通过了:
#include <stdioh>
#include <stdlibh>
#define maxn 1000
int main()
{
int n, num;
int i, j, t;
int mine[maxn], his[maxn];
do {
num=0;
scanf("%d",&n);
if (n>=1 && n<=1000) {
for (i=0; i<n; i++) scanf("%d", &mine[i]);
for (i=0; i<n; i++) scanf("%d", &his[i]);
//Sort mine[]={5,4,6,1,9} to {1,4,5,6,9}
for (i=0; i<n-1; i++)
for (j=i+1; j<n; j++)
if (mine[i]>mine[j]) {
t=mine[i];
mine[i]=mine[j];
mine[j]=t;
}
for (i=0; i<n; i++)
for (j=0; j<n; j++)
if (mine[i]>his[j] && mine[i]!=0 && his[j]!=0) {
num++;
printf("%d %d---%d",mine[i],his[j],num);
mine[i]=his[j]=0;
break;
}
printf("%d and %d \n", num, n/2+1);
if (num>=n/2+1)
printf("YES\n");
else
printf("NO\n");
}
} while(n!=0);
system("pause");
return 0;
}
cyclibarriar 就是栅栏,顾名思义:就是一个拦截的装置。多个线程start后,在栅栏处阻塞住,一般定义栅栏的时候会定义有多少个线程。比如定义为4个,那么有三个线程到栅栏处,就阻塞住,如果没有第四个,就会一直阻塞,知道启动第四个线程到栅栏处,所有的线程开始全部进行工作。有点像赛马的例子。所有的赛马一个一个到起点,然后到齐了,在开始跑。
countdownlatch:初始化定义一个数字(整型),比如定义2,一个线程启动后在await处停止下来阻塞,调用一次countDown,会减一,知道countDown后变为0时的时候,线程才会继续进行工作,否则会一直阻塞。
自己写个赛马的程序,其实就什么都懂了。
田忌--纪元前341年,齐国(首府临淄)宰相邹忌,嫉妒大将田忌威震国际,企图栽赃陷害,派人手拿340两黄金,到街上请人算卦,向卜卦先生说:“我是田忌的随从,我家将军作战,三战三胜,他打算进行大事,请看一下吉凶?”等卜卦先生出门,邹忌叫人把他逮捕,眼看就要掀起大狱,田忌无法澄清,又气又急,率领他的卫队发动攻击,打算逮捕邹忌。可是邹忌早有准备,田忌无法取胜,只好出奔楚王国(首都郢城)
“诬以谋反”是中国传统政治中一件其效如神的法宝,强悍的头目要排除他亲密的战友或有实力的政敌时,习惯使用,当之者无不粉碎。因为它是政治的和法律的结合物,政治是内容,法律不过形式,所以无罪不能无刑,至为狠毒,无人能解。田忌身为民族英雄、三军统帅,对国家有盖世功勋,跟国王的关系也十分密切,可是,一旦陷入“诬以谋反”诛杀大阵,立刻束手无策。
孙膑--庞涓妒孙膑之才而将其骗至魏,施以膑刑(割去膝盖骨),因有孙膑之称。孙膑(约公元前380-432),中国军事家。战国中期齐国人。少时孤苦,年长后从师鬼谷子学习《孙子兵法》,显示了惊人的军事才能,不料,他却因此遭人暗算…… 孙膑在从师鬼谷子学习兵法时,有一个师弟叫庞涓。庞涓的天资学业虽较孙膑差得很多,但他为人奸猾,善弄小权本,又轻易不被察觉。他与孙膑同学时,心里很是嫉妒孙膑的才能,可在嘴上从未流露过,一再表示将来有了出头之日,一定要举荐师兄,同享富贵。心地善良的孙膑,与庞涓兄弟相称,如同亲兄弟一样。转眼过去了几年,孙膑、庞涓两人,经过鬼谷子的精心调教,兵法、韬略大有长进。这时,传来了魏惠三招贤纳士的消息。本是魏国人的庞涓,觉得机会来了,决定下山。临别时,他向孙膑保证,此行一旦顺利,马上引荐师兄下山,扶同做一番事 业。孙膑自然深表谢意,嘱咐他多加保重,两人洒泪告别。 庞涓到魏国后又是送礼,又是托人说情,很快见到了魏惠王。庞涓毕竟也有些本领,很快得到了魏惠王的赏识,被封为将军。随后,庞涓指挥军队同卫国和宋国开战,打了几个胜仗后,庞涓成了魏国上下皆知的人物,从此更得魏惠帝的宠信。 春风得意中的庞涓高兴了好一阵子,又突然沉寂下来。原来他有了心病;论天下的用兵之法,除了孙膑之外没人能赶上自己了。一想到孙膑,他心里就有一种说不出来的滋味。按照当初的诺言办吧,就得把孙膑推荐给魏惠王,孙膑的 声名威望很快就会超过自己;不去履行当初的诺言吧,孙膑一旦去了别的国家,施展起来才能自己同样不是对手。庞涓寝食不安,日夜思谋着对策。一天,正在山上攻读兵书的孙膑,接到庞涓差人秘密送来的一封信。信上庞涓先叙述了他在魏国受到的礼待重用。然后又说,他向魏惠王极力推荐了师兄的盖世才能,到底把惠王说动,请师兄来魏国就任将军之职。孙膑看了来信,想到自己就要有大显身手的机会了,深觉自己的师弟挺讲义气,立即随同来人赶往魏国的都城大梁。孙膑来后,庞涓大摆筵席,盛情款待。几天过去了,就是没有魏惠王的消息,庞涓也不提此事。孙膑自然不便多问,只好耐心等待。这天,孙膑闲得难受,找到一本书读起来突然,屋外传来一阵吵嚷声,他还没有弄清是怎么回事,就已被闯进屋子的兵士捆绑起来,推推搡搡带到一个地方。那里的一个当官模样的人,立即宣布孙膑犯有私通齐国之罪,奉魏惠王之命对其施以膑足、黥脸之刑。孙膑被这突如其来的事情惊呆了,随即省悟过来,高声为自己辩白。然而,一切都晚了,那些如狼似虎的兵士七手八脚扒去孙膑的衣裤,拔刀剜去了孙膑的两个膝盖骨,并在他的脸上刺上犯罪的标志。孙膑倒卧在血泊之中。 原来,这庞涓把孙膑骗来之后,即在魏惠兰面前巧言诬陷,使孙膑遭此伤身之祸。庞涓以为,受刑后的孙腹成了一个残疾人,他纵有天大的本事,也难以和自己较量了。 孙膑的伤口渐渐愈合,但他再也站不起来了,而且,还有人时时刻刻监视着他。他知道庞涓在陷害他,他恨得咬牙切齿,可老这样也不行,总得想个脱身之法才是。不久,孙膑疯了,他一会儿哭,一会儿笑,叫闹个不停。送饭的人拿来吃的,他竟连碗带饭扔出好远。庞涓听说了这些,并不相信孙膑会疯,便叫人把他扔到猪圈去,又偷偷派人观察。孙膑披头散发地倒在猪圈里,弄得满身是猪粪,甚至把粪塞到嘴里大嚼起来。庞涓认为孙膑是真疯了,从此看管逐渐松懈下来。 孙膑装疯产生了作用,他暗中加紧了寻找逃离虎口的机会。一天,他听说齐国有个使臣来到大梁,便找了个间隙,偷偷前去拜访。齐国的使臣听了孙膑的叙述,从谈吐中认定他是一个很了不起的人才,十分钦佩,遂答应帮他逃走。这样,孙膑便藏身于齐国使臣的车子里,秘密地回到了齐国。这个时候,正值齐、魏争霸,交战不断的年代。早在公元前386年;代表新兴地主阶级的田氏贵族在齐国取得政权后,就进行了一系列的社会改革,盐文武人才,坚守边境,反抗外来的威胁。孙膑回国后,很快见到齐国的大将田忌。田忌十分赏识孙膑的才干,便将他留在府中,以接待上宾的礼节殷勤加以款待。 田忌喜欢赛马,但却时常输掉。有一次,他又与齐威王赛马,马分上、中、下三等,对等竞赛,三场全输,田忌好不丧气。这时恰巧孙膑在场,便给田忌出主意说待到下一轮比赛时,你用上马对威王的中马,用中马对威王的下马,用下马对威王的上马,必赢无疑。”田忌依计行事,造成两个局部的优势和一个局部的劣势,以一负二胜赢得齐三千金。一向取胜的齐威王这次输了,大感惊讶,忙问田忌是何原因?田忌把孙膑找来,借机推荐给齐威王。 齐威王见是一个双腿受刑的残疾人,开始并未介意,当孙膑陈述自己对战争问题的看法时,齐威王便有意问道依你的见解,不用武力能不能使天下归服呢?”孙膑果断地回答说这不可能,只有打胜了,天下才会归服。”然后,他列举黄帝打尤,尧帝伐共工,舜帝征三苗,以及武王伐纣等事实,说明哪一个朝代都是靠武力解决问题,用战争实现国家的统一。这一番深刻独到的分析,使齐威王大受震动。再询问兵法,孙膑更是滔滔不绝,对答如流。齐威王感到孙膑其人确实不简单,从此以先生”相称,把他作为老师看待。 公元前354年,魏将军庞涓发兵8万,以突袭的办法将赵国的都城邯郸包围。赵国抵挡不住,意派使者向齐国求救。齐威王欲派孙膑为大将,率兵援赵。孙膑辞谢说我是受过刑的残疾人,带兵为将多有不便,还是请田大夫为将,我从旁出出主意吧!”齐威王想想也好,就拜田忌为大将,孙膑为军师,发兵8万,前往救赵。大军既出,田忌欲直奔邯郸,速解赵国之围。孙膑不赞成这种硬碰硬的战法,提出应趁魏国国内兵力空虚之机,发兵直取魏都大梁,迫使魏军奔赵回救。这一战略思想,将避免齐军长途奔袭的疲劳,而致魏军于奔波被动之中,立即为田忌采纳,率领齐军杀往大梁。
以上就是关于C语言里关于田忌赛马的问题全部的内容,包括:C语言里关于田忌赛马的问题、C语言 渊子赛马 非常规解法出现不理解的问题、在java中cyclibarriar和countdownlatch有什么区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)