作者waterdisney (想要征服的世界)
看板C_and_CPP
標題Re: [問題] 一個檢查array內容的功能
時間Thu Apr 20 22:52:21 2017
※ 引述《Zoxge (Zoxge)》之銘言:
: 開發平台(Platform): (Ex: Win10, Linux, ...)
: Linux
: 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
: GCC
: 問題(Question):
: 有一個一維array,裡面隨機存了20個1~500之間的數字
: 現在要依序print出1~500之間的數字,但不包含那個一維array裡面的內容
: 請問除了下面網址內的方法(檢查array中每個index存放的值)之外
: 有什麼更快的方法能夠解決這個問題呢?
: 謝謝
: 程式碼(Code):(請善用置底文網頁, 記得排版)
: https://ideone.com/1KIzIo
bool isNumberInArray[501]={0};
for(int i=0;i<20;i++)
{
isNumberInArray[ ARRAY[i] ]=1;
}
for(i=1;i<=500;i++)
{
if( 0 == isNumberInArray[i] )
printf("%d",i);
}
用一個大小為500的bool array紀錄哪些數字不用印出來
然後依序把剩下的數字印出來即可
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.47.7
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1492699944.A.063.html
1F:→ CodingMan: 大小不是501嗎? 04/20 23:37
2F:→ Hazukashiine: 別糾結 ww 這裡宣告 isNumberInArray[500] 也可以 04/21 01:25
3F:→ Hazukashiine: 但是要改成 isNumberInArray[ ARRAY[i] - 1] = 1; 04/21 01:26
4F:→ hunandy14: 好奇 ={0} 的習慣是基於好辨識嗎 一看就知道初始0 04/27 13:10
5F:→ hunandy14: 因為這只會初始化到第一個~還是有什麼其他原因 04/27 13:11
6F:推 LPH66: 不是喔, {} 初始化對後面沒寫元素的都是預設初始化 04/28 10:07
7F:→ LPH66: 對 primitive type 預設初始化就是 0 04/28 10:08
8F:→ LPH66: 所以理論上可以寫 = {}, 但寫 = {0} 看的人就很清楚是 0 04/28 10:09
9F:→ LPH66: 另外寫 = {} 跟不寫也有差, 不寫才是真的都沒初始化 04/28 10:15
10F:→ hunandy14: 了解~知道會預設初始化,敘述打錯了 04/28 13:03
11F:→ hunandy14: 原意是想表示 只會指定第一個~ 感謝說明 04/28 13:05