最大間隙問題

2021-10-09 22:25:49 字數 1288 閱讀 8337

求若干點中間隔最大的兩個相鄰點

#include

#include

#include

#include

using

namespace std;

const

int maxn =2;

void

print

(int

*a)}

intjudge

(int

*a)}

return maxgap;

}int

main

(void

)int min = a[0]

, max = a[0]

;for

(int i =

1;i < maxn;i++)if

(a[i]

< min)

}int high[maxn]

, low[maxn]

;for

(int i =

0;i < maxn;i++

)int len = max - min;

double bucketlen =

1.0*len/

(maxn-1)

;//確定每個區間的長度

int bucket[maxn]=;

for(

int i =

0;i < maxn;i++

)//將maxn-2個點分到maxn-1個桶

if(a[i]

< low[k])}

int left = high[0]

;int maxgap =0;

for(

int i =

1;i < maxn;i++

)//遍歷桶

left = high[i];}

}print

(a);

cout << endl;

cout << maxgap << endl;

cout <<

judge

(a)<< endl;

return0;

}

思路

根據數的範圍[min,max]劃分n-1個等長的區間,稱為n-1個桶將除 max和min只外的n-2個數分到n-1個桶裡,根據鴿舍原理可知必定至少有1個桶為空,故最大的連續點的間隔必定不在乙個桶內(因為區間是等長的) 必定會跨越空的桶,故只需遍歷一遍即可

bucket[i]:分到i號桶的數的數量

high[i]:分到i號桶的最大值

low[i]:分到i號桶的最小值

最大間隙問題

最大間隙問題 問題描述 最大間隙問題,給定n 11,x2,xn,求這n個數在實軸上相鄰2個數之間的最大差值。假設對任何實數的下取整函式耗時o 1 設計乙個計算複雜性最低的演算法解決最大間隙問題。演算法設計 對給定的n個實數x1,x2,xn,計算它們的最大間隙。資料輸入 輸入資料由檔名為 zdjian...

最大間隙問題

問題描述 最大間隙問題 給定n 個實數x1,x2 xn,求這n 個數在實軸上相鄰2 個數之間的最大差值。假設對任何實數的下取整函式耗o 1 設計解最大間隙問題的線性時間演算法。程式設計任務 對於給定的n 個實數x1,x2,xn,程式設計計算它們的最大間隙。資料輸入 輸入資料由檔名為input.txt...

最大間隙問題

給定n個實數,求出相鄰的兩個數,這兩個數的差值是所有相鄰數的最大 例如 1 3 7,8,則答案是3,7 思想如下 找出最大值和最小值,則所有的兩個數 m n max min n 1 因此,設定n 1 個區間,區間長度為 max min n 1,將所有數按照與min的差值對映到這些區間裡 則所有的兩個...