C语言里关于田忌赛马的问题

Python023

C语言里关于田忌赛马的问题,第1张

其实你的算法很简单,就是让渊子的马按照速度按照从小到大排序,取前1/3为从小到大的顺序,然后剩下的2/3按照从大到小排序。

让对手的马按照从大到小排序。

这样你就能保证渊子赢了。

我的代码;

#include<stdio.h>

int main()

{

int n,s,i,j,sub=0,sum=0

int tfast,tslow,wfast,wslow //分别代表田的最快马,最慢马,王的最快马,最慢马

int t[1000],w[1000]

while(scanf("%d",&n)&&(n!=0))

{

for(i=0i<ni++)

scanf("%d",&t[i])

for(i=0i<ni++)

scanf("%d",&w[i])

for(i=0i<n-1i++)

for(j=0j<n-1-ij++)

if(t[j]<t[j+1])

{s=t[j]t[j]=t[j+1]t[j+1]=s}

for(i=0i<n-1i++)

for(j=0j<n-1-ij++)

if(w[j]<w[j+1])

{s=w[j]w[j]=w[j+1]w[j+1]=s} //由大到小排序

tfast=0tslow=n-1

wfast=0wslow=n-1 //最快最慢马的初始化

for(i=0i<ni++) //分三种情况

{

if(t[tfast]==w[wfast])//情况1

{

if(t[tslow]>w[wslow]){sub++tslow--wslow--}

else if(t[tslow]<w[wslow]){sub--tslow--wfast++}

else if(t[tslow]==w[wslow])

{

if(t[tslow]<w[wfast]){sub--tslow--wfast++}

else if(t[tslow]==w[wfast]){break}

}

}

else if(t[tfast]>w[wfast]) //情况2

{sub++tfast++wfast++}

else{sub--tslow--wfast++} //情况3

}

sum=sub*200

printf("%d\n",sum)

sub=0sum=0

}

}