區間重合判斷 C語言實現

2021-06-18 14:06:38 字數 1112 閱讀 6179

問題描述:

給定乙個源區間[x,y](y>=x)和n個無序的目標區間[x1,y1],[x2,y2],[x3,y3],......[xn,yn],判斷源區間[x,y]是不是在目標區間內?

例如給定源區間[1,6]和一組無序的目標區間[2,3],[1,2],[2,9],[3,4],即可認為區間[1,6]在區間[2,3],[1,2],[2,9],[3,4]內。

解決方法:

1.首先對無序的目標區間進行從小到大的排序;

2.對排好序的區間進行合併;

3.在合併後的區間中使用二分查詢來判斷給定源區間是否在被合併的這些互不相交的區間中的某乙個包含。

#include #include #define max 100

struct line

;/*實現結構體陣列的排序*/

void quicksort(struct line a,int l,int h)

/*對已經按照地位排好續的區間進行合併區間*/

int hebing(struct line a,int n)

} a[count++].high=lasthigh; //儲存最後的乙個區間的高位

return count;

}/*對合併以後的區間使用二分查詢的方法查詢源區間是否在目標區間上*/

void search_souce(struct line a,int n,struct line targt)

else if (a[mid].low>=targt.high)

else if (a[mid].high<=targt.low)

end=mid+1;

else

}if (1==flag)

printf("yes\n");

else

printf("no\n");

}int main()

; struct line lines[max]=;

struct line targt=;

int count=0;

int i;

quicksort(a,0,3);

count=hebing(a,4);

search_souce(a,count,targt);

for (i=0;i

區間重合 c

給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 1,4 4,5 輸出 1,5 解釋 區間 1,4 和 4,5 可被視為重疊區間。先排序 按照...

程式設計之美 區間重合判斷

問題描述 給定乙個源區間 x,y 和若干個無序的目標區間 x0,y0 x1,y1 x2,y2 xn,yn 判斷源區間是否在目標區間內。思路 1 分解源區間 把目標區間逐一的對映在源區間上,可以將源區間分解為更小的區間。最後看是否能將源區間全部分解。例如 源區間 目標區間 step 1 目標區間 可以...

素數判斷 C語言實現

除了1和自身之外不能整除其它數,稱之為素數.最小的素數是2.沒有最大的素數.1000以內素數,如下圖所示 關於素數的演算法,一般有2種.第1種,給出乙個數n n 2 判斷n是不是素數 第2種,給出乙個數n n 2 把 2,n 的所有素數拿出來 判斷乙個數n是否是素數,最簡單粗暴的方法就是把n分別與i...