1/*2要求: 1. 定義乙個整數集合類 set,要求該類包含如下屬性和操作:
3屬性:
4① 元素表屬性 member[setsize]:是從 0 … setsize –1 範圍內的整數中選出 的元素表,其中 setsize 指定整數元素值和表中可以容納的元素個數的範圍,
5例如,可以在類外定義: const int setsize = 500;。 注意,元素表 member 的元素值只有兩種狀態(非 true 即 false)。如果元素 n 對應的元素表的元素值為真(true),
6則表示 n 在集合中,即 n∈x 當且僅當 member[n] 為真。 例如,集合 x = 對應的元素表中,只有元素 member[1],member[4], member[5],member[7]為真,
7而其餘元素均為假。
8操作:
9① 建構函式:構造 set 類物件分兩種情況:
10·如果不通過引數傳遞初值,則在集合物件的構造過程中,元素表 member 的各 個元素被預設設定為 false,即空元素表。
11·如果將乙個整型陣列 a和陣列的元素個數 n 作為引數傳遞初值,則在集合物件 的構造過程中,元素表中由陣列 a的元素值作為下標的元素值被設定為 true,
12而其他元素設定為 false。
13② 插入元素操作 insert:通過引數將乙個在 0 … setsize –1 範圍內的整數 n 插 入集合中,即 member[n] = true。
14③ 刪除元素操作 delete:通過引數將乙個在 0 … setsize –1 範圍內的整數 n 從集合中刪除,即 member[n] = false。
15④ 並集運算操作 operator+:將兩個 set 物件表示的整數集合進行並集運算,並返 回結果集合。
16⑤ 交集運算操作 operator*:將兩個 set 物件表示的整數集合進行交集運算,並返 回結果集合。
17⑥ 屬於集合運算操作 operator^:判斷乙個整數元素是否屬於乙個指定的 set 物件 表示的整數集合,並返回結果標誌(非 true 即 false)。
18被判斷的整數元素和整數 集合通過引數傳遞給操作。
19⑦ 輸出操作:通過標準輸出流 cout,按集合的表示格式輸出顯示整數集合
20*/
21 #include22 #include 23
using
namespace
std;
24class
set25
32 set(int n, int
p);33 set(int n)
34void insert(unsigned int
n);35
void delete(unsigned int
n);36
int* geta()
37 friend set operator+(set x, set y);//
並集38 friend set operator*(set x, set y);//
交集39
bool
operator^(int
op);
40void
showa();
41void
showm();
42void delete()
43//
~set()
//兩個友元函式中定義了例項物件,由編譯器析構的話,物件的記憶體不存在,
44//
計算得出的集合也就無法輸出
45};
46bool set::operator^(int
op)47
53void
set::showa()
5458
void
set::showm()
5963 set::set(int n, int
p)64
91//
deletep;
9293}94
void set::insert(unsigned int
n)95
101void set::delete(unsigned int
n)102
108 set operator+(set x, set y)
109119 set operator*(set x, set y)
120132
133int*np = new
int[mi];
134for (int i = 0; i < mi; i++)
135 np[i] =p[i];
136//
deletep;
//嗯,在函式體中,應該呼叫完畢就撤銷了記憶體吧?
137set t(mi, np);
138return
t;139
}140
intmain()
141
一道作業題
時間限制 1000 ms 記憶體限制 64 mb 題目描述 初始有乙個數n,每過一秒所有大於1的數x都會 成3部分 x 2 x 2 x 2 問經過足夠長的時間後,即所有的數都是0或1的時候,0的個數是多少.輸入資料 乙個正整數n,n 1e12 輸出資料 最終0的個數 樣例輸入 5樣例輸出 2樣例說明...
一道演算法作業題(續)
在乙個圓形操場的四周擺放著n堆石子,現要將石子有次序地合併成一堆。規定每次只能選擇相鄰的兩堆石子合併成新的一堆,並將新一堆石子數記為該次合併的得分。試設計乙個動態規劃演算法,計算出將n堆石子合併成一堆的最小得分和最大得分,要求列出遞迴方程,寫出演算法的偽 並分析演算法的時間空間複雜性。要求每次合併必...
最近做的一道c 作業題
今天突然想到,接觸這玩意快一年了,結果還是弱雞乙隻。一直跟自己說慢慢來,但是覺得,還是不能慢慢來,雖然想好好學習,但一直只是想。有時候想什麼高數什麼大物都不寫,但是囿於現實,沒辦法。沒地方說事情就在這裡巴拉巴拉一大堆先。看題吧 實驗內容 實驗 編寫乙個人員資訊管理系統。這個系統的功能是 互動式的實現...