其实刚开始写的时候本人也是非常的头疼,半个小时后我想到用循环去找那两个数字“最大里的最大,最小里的最大”(别急,待会会告诉你)
首先根据题意是让我们找出最快的到桥两边和最慢到桥两边的时间,其实可以先想象一下,最好的情况就是不会发生相遇,就是谁离哪个桥边最近刚好面朝着那边,这就是最小了,那它最快需要的时间就是第i个人(所有人中距离到他所对应的桥边最远)需要的时间;
最大里的最大需要读者自己先画几个人刚好面朝离自己远的那个桥边,经过实验你就会发现,最终结果时间就是离起始面对桥面的距离差(时间)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int fmax(int a, int b)
{
if (a > b)
return a;
else
return b;
}
int fmin(int c, int d)
{
if (c < d)
return c;
else
return d;
}
int main()
{
int fmax(int a, int b);//求最大值函数
int fmin(int c, int d);//求最小值函数
int L; int i;
int N; int c;
int max = 0, min=0 ;
scanf("%d", &L);//桥长
scanf("%d", &N);//人数
for (i = 0; i < N; i++)
{
scanf("%d", &c);//循环输入当前位置
max = fmax(max, fmax(c, L - c+1));//注意桥头所代表的位置,以及距离的表示方法
min = fmax(min, fmin(c, L - c+1));
}
printf("%d %d",min,max);
return 0;
}