本题目看似很难,其实很简单,就下几行代码。自己模拟一下过程就可以发现可以将蚂蚁间走过的路程互相补在一起的话。
若有n只蚂蚁。
Sn = n只蚂蚁走过的路程总和; an = 棍子长度 - 此蚂蚁距某端的最短距离;
Sn = an的前n项求和
在代码中 int x[n]; 之所以可以编译的原因是在之上有
int n,length;
scanf("%d%d",&length,&n); 此时的n已不为未知数
用到的算法有累加 min = min + x[i]; max = max + (length - x[i]); 其实这也不算算法吧.... --==--
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,length;
scanf("%d%d",&length,&n);
int x[n];
int i;
int max = 0,min = 0;
for(i = 0;i < n;i++){
scanf("%d",&x[i]);
}
//默认数组内的元素都是从小到大的排列
for(i = 0;i < n;i++){
if(x[i] > length - x[i]){
x[i] = length - x[i];
}
min = min + x[i];
max = max + (length - x[i]);
}
printf("min = %d\n",min);
printf("max = %d\n",max);
return 0;
}