///這道題好像是青蛙過河,我也沒有翻譯,因為之前做過乙個這樣的題,就是一條河有l寬,河中有n個石頭,青蛙可以跳到石頭上
這n個石頭距離某個岸邊的距離為a[i];然後青蛙過河最多跳m次,問青蛙最少需要一次跳多遠的能力才能夠過河;
解法就是貪心演算法,加二分答案;當然好像不二分也能過;列舉也行;
先把a[i]從小到大排序,然後找到找到兩個中間距離最遠的距離maxlen即max(a[i]-a[i-1])(也可能為a[1]或l-a[n]);
然後從maxlen到l進行列舉;
**如下:
#include#include #include int a[500050];
int maxlen;
int l;
int m,n;
int comp(const void *a,const void *b)
int fin(int mid)
} cont++;
if(cont<=m)
return 1;
else
return 0;
}void execute()
{ int i,j;
for(i=0;i=1;--i)
{ a[i]=a[i]-a[i-1];
if(maxlen
青蛙過河問題
青蛙過河是乙個非常有趣的智力遊戲,其大意如下 一條河之間有若干個石塊間隔,有兩隊青蛙在過河,每隊有3 只青蛙,如 圖 10 19所示。這些 青蛙只能向前移動,不能向後移動,且一次只能有乙隻青蛙向前移動。在移動過程中,育蛙可以向 前面的空位中移動,不可一次跳過兩個位置,但是可以跳過對方乙隻青蛙進入前面...
N 青蛙過河
description 1 一條小溪尺寸不大,青蛙可以從左岸跳到右岸,在左岸有一石柱l,石柱l面積只容得下乙隻青蛙落腳,同樣右岸也有一石柱r,石柱r面積也只容得下乙隻青蛙落腳。2 有一隊青蛙從小到大編號 1,2,n。3 初始時 青蛙只能趴在左岸的石頭 l 上,按編號乙個落乙個,小的落在大的上面 不允...
N 青蛙過河
description 1 一條小溪尺寸不大,青蛙可以從左岸跳到右岸,在左岸有一石柱l,石柱l面積只容得下乙隻青蛙落腳,同樣右岸也有一石柱r,石柱r面積也只容得下乙隻青蛙落腳。2 有一隊青蛙從小到大編號 1,2,n。3 初始時 青蛙只能趴在左岸的石頭 l 上,按編號乙個落乙個,小的落在大的上面 不允...