求若干點中間隔最大的兩個相鄰點
思路#include
#include
#include
#include
using
namespace std;
const
int maxn =2;
void
(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];}
(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的差值對映到這些區間裡 則所有的兩個...