[問題] 數學集合的包含運算

看板C_and_CPP (C/C++)作者 (吃夢的男孩)時間13年前 (2013/02/03 17:15), 編輯推噓4(4022)
留言26則, 8人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 要做數學集合的運算 目前做出 聯集 交集 差集 可是包含不知道怎麼判斷才能完整做出集合包含跟元素包含 餵入的資料(Input): 集合 內元素 0 1.2.3.4.5 1 5.4.1. 2 2.3 3 5.6.7 4 1.2.3.4.5 5 2.9 .... 預期的正確結果(Expected Output): 集合包含就是像集合0跟集合1內的元素有部分相同 所以集合1會被集合0包含住 所以集合1刪掉(541跟12345) 同理 集合2會被集合0包含住 所以集合2刪掉(23跟12345) 集合4會被集合0包含住 所以集合4刪掉(12345跟12345) ================ 元素包含就是指像是元素1 出現在集合0.1.4 而元素4 也出現在集合0.1.4 所以元素4 會被元素1包含住 所以元素4 刪掉 同理 元素3會被元素2包含住 元素2出現在0.2.4.5 而 元素3出現在0.2.4 元素3會被部分包含 所以元素3刪掉(集合0.2.4) 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): 目前是把每個元素都存在一維陣列A裡面 然後原本空的集合元素用0取代 所以會變成 集合 內元素 0 1.2.3.4.5 1 5.4.1.0.0 2 2.3.0.0.0 3 5.6.7.0.0 4 1.2.3.4.5 5 2.9.0.0.0 做集合包含 原本是想用暴力法掃過陣列A 可是條件是不知道要怎麼判斷才能把多餘的元素或陣列刪掉 假設每列叫作r 每行叫做c for(r=0; r< r_end;r++) 我在寫if這邊碰到困難 因為每行的行數不一樣 寫if(A(row*5+column_1)==A((row+1)*5+column_2)) A(row+1*5+column_2)=0; 這樣好像只能判斷每個行數一樣的 但不能判斷345 12345這種狀況 不知道要怎麼處理 謝謝 元素包含就完全不知道怎麼下手了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.41.236.1

02/03 17:18, , 1F
這問題好面熟..
02/03 17:18, 1F

02/03 17:19, , 2F
請再多說明「元素範圍」。
02/03 17:19, 2F

02/03 17:24, , 3F
用Python算(誤) 有這疑問+1
02/03 17:24, 3F

02/03 17:37, , 4F
不能用map嗎
02/03 17:37, 4F

02/03 18:53, , 5F
你能做出集合交集,應該就可以做出集合包含
02/03 18:53, 5F

02/03 18:55, , 6F
元素包含:把每一個元素所在集合,另獨立出新的一群集合
02/03 18:55, 6F

02/03 18:56, , 7F
針對這群新集合,再做集合包含即可
02/03 18:56, 7F

02/03 19:42, , 8F
02/03 19:42, 8F

02/03 19:56, , 9F
02/03 19:56, 9F

02/03 20:45, , 10F
原 po 用 C , 要仿成 C++ map 可能有點複雜了
02/03 20:45, 10F

02/03 21:37, , 11F
或許可以在比對的時候對0做處理 或是用陣列維護集合大小
02/03 21:37, 11F

02/03 21:38, , 12F
其實敘述還有缺一些細節 例如說元素順序是否重要
02/03 21:38, 12F

02/03 21:39, , 13F
還有元素的可能值範圍 以及是否需要考慮時間或空間複雜度
02/03 21:39, 13F

02/03 21:41, , 14F
看起來有點像是練習 array 用的題目@@"
02/03 21:41, 14F

02/03 22:23, , 15F
好好加油... http://ppt.cc/IDxp 解題還有語言限制就
02/03 22:23, 15F

02/03 22:23, , 16F
不想解了, 如果都完全符合要求乾脆幫你做完算了
02/03 22:23, 16F

02/03 22:30, , 17F
loveme~ 太有心了
02/03 22:30, 17F

02/03 22:36, , 18F
當你還在用array硬幹資料結構的時候, 人家都已經用ADT
02/03 22:36, 18F

02/03 22:36, , 19F
飛上天了
02/03 22:36, 19F

02/03 23:13, , 20F
謝謝 我會好好想想的...
02/03 23:13, 20F

02/03 23:27, , 21F
看了第三遍才看懂在問啥orz
02/03 23:27, 21F

02/04 00:10, , 22F
不過dev c compile不過QQ
02/04 00:10, 22F

02/04 01:48, , 23F
你該換編譯器..
02/04 01:48, 23F

02/04 08:43, , 24F
編譯器選項加一下 -std=c99 如果再不行你可能要換版本
02/04 08:43, 24F

02/04 08:44, , 25F
或者修語法了... 預設是用20年前的標準
02/04 08:44, 25F

02/04 09:57, , 26F
謝謝 我在換個編譯器試試
02/04 09:57, 26F
文章代碼(AID): #1H3YgWH5 (C_and_CPP)
文章代碼(AID): #1H3YgWH5 (C_and_CPP)