田忌赛马
12.*田忌赛马田忌与齐王赛马,双方各有n匹马参赛(n<=100),每场比赛赌注为1两黄金,现已知齐王与田忌的每匹马的速度,并且齐王肯定是按马的速度从快到慢出场,现要你写一个程序帮助田忌计算他最好的结果是赢多少两黄金(输用负数表示)。
最好的结果就是田忌出场次序调整后能赢最多的黄金 。
有两个想法,
1 穷举法,肯定能计算出赢最多的两黄金数。
2 研究规律
穷举就不说了。假设3匹马
王的马的速度:8 5 3
田的马的速度:7 4 1 田最多赢2场,取决于田最快马的速度,和王最慢马的速度。
王:10 8 6 4 3
田 6 5 4 3 2 田最多赢2场 。
规律 FunMax() ----田最快马速度大于王的马速度的个数
FunMin() ----王最慢马速度大于田的马速度的个数
赢的次数 nCount = FunMax()-FunMin() +1 ;
void ReadInfo(); // 读两人马速到W[] 和t[]
int FunMax(int *p,int *q);
int FunMin(int *p,int *q);
void main()
{
int w[100]={0}; //王
int t[100]={0}; //田
ReadInfo();
int max = FunMax(w,t);
int min = FunMin(w,t);
printf("最多赢的黄金%d",max+min+1);
}