集合的前N個元素

2022-04-06 06:55:33 字數 785 閱讀 2429

集合的前n個元素:編乙個程式,按遞增次序生成集合m的最小的n個數,m的定義如下:

(1)數1屬於m;

(2)如果x屬於m,則y=2*x+1和z=3*x+1也屬於m;

(3)此外再沒有別的數屬於m。

可以用兩個佇列a和b來存放新產生的數,然後通過比較大小決定是否輸出,具體方法如下:

(1)令fa和fb分別為佇列a和佇列b的頭指標,它們的尾指標分別為ra和rb。初始時,x=1,fa=fb=ra=rb=1;                              

(2)將2*x+1和3*x+1分別放入佇列a和佇列b的隊尾,尾指標加1。                  即:a[r]←2*x+1,b[r]←3*x+1,r←r+1;

(3)將佇列a和佇列b的頭結點進行比較,可能有三種情況:

(a)a[ha]>b[hb]      (b)a[ha]=b[hb]         (c)a[ha]將比較的小者取出送入x,取出數的佇列的頭指標相應加1。

(4)重複(2),(3)直至取出第n項為止。

#includeusing

namespace

std;

const

int n = 20002

;int

a[n],b[n];

//a是2x+1,b是3x+1

int n,fa=1,fb=1,ra=0,rb=0,x=1,h=1;//

x為最開始的乙個數,h做統計

intmain()

return0;

}

view code

m 元素集合的n 個元素子集

說明 假設有個集合擁有m個元素,任意的從集合中取出n個元素,則這n個元素所形成的可能子集有那些?c m,n m n m n 解法 假設有5個元素的集點,取出3個元素的可能子集如下 這些子集已經使用字典順序排列,如此才可以觀察出一些規則 1 如果最右乙個元素小於m,則如同碼表一樣的不斷加1 2 如果右...

m元素集合的n個元素子集

m元素集合的n個元素子集 說明 假設有個集合擁有m個元素,任意的從集合中取出n個元素,則這n個元素所形成的可能子集有那些?解法 假設有5個元素的集點,取出3個元素的可能子集如下 這些子集已經使用字 典順序排列,如此才可以觀察出一些規則 如果最右乙個元素小於m,則如同碼表一樣的不斷加 1 如果右邊一位...

在N個元素中選取前M個元素

import org.junit.test public class solution int arr maxarr arr,3 for int i 0 i 5 i 問題 在n個元素中選取前m個元素 思路 1 建立長度為m的陣列,作為最小堆 或則arr 0,m 1 構建小頂堆 3 先往最小堆中存入一...