Re: [問題] 兩串數字,凡出現2次以上的數字只印出ꐠ…
※ 引述《Jyie (羽球幼幼班)》之銘言:
: a[10]={11,23,15,16,78,14,77,34,19,46}
: b[10]={46,78,22,67,98,99,16,15,64,11}
: 這兩串數字同樣數字只印出一次,顯示結果要是:
: 11,23,15,16,78,14,77,34,19,46,22,67,98,99,64
: 請問要他那樣顯示該如何寫?
: 想過用兩層迴圈寫:(好像不行)
: for(i=0;i<10;i++)
: {
: for(j=0;j<10;j++)
: {
: if(a[i] = = b[j] )
: printf.........;
: }
: }
: 小弟想用串列寫多項式相加的程式,但要印出結果遇到上面那種問題,不知道該怎麼做!
小弟我以為zlw大已經提示的很清楚了說....@_@"
先假設a[]裡不會有重複的, b[]裡也不會有重複的....
所以現在要印的時候是要避免印出a[]b[]裡都有的數....
Step 1. 先把 a[] 全部印完.
Step 2. 拿b[0]和a[]全部element判斷, 如果沒有相等的就印出來.
Step 3. Repeat Step2, 直到b[]裡從頭到尾都跑過.
目前您卡在關鍵在Step2, 其實它的邏輯也不複雜....
只是可能需要搭配一個flag來記錄到底b[0]存不存在於a[]....
BOOL bConflict = FALSE
FOR(i = 0 ~ Length of A[])
{
IF(b[0] == A[i])
{
bConflict = TRUE
BREAK
}
}
IF(bConflict == FALSE)
{
PRINT b[0]
}
因為小弟我懶得寫的太精確, 所以上面是混雜著C style的psuedo code....
現在有了Step 2了, Step 3您需要做的只是用另一個迴圈把它包起來....
話說, 其實拿loop的index判斷一下, 就算沒有那個bConflict也做得出來....
不過這樣寫邏輯與想法應該比較清楚明白, 最佳化什麼的等寫得出來再說吧:)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 222.66.238.68
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章