【題目描述】
給定兩個整型陣列,要求找出不是兩者共有的元素。
【輸入】
有兩行。第1行先給出正整數n(n≤20),隨後是n個整數,其間以空格分隔。第2行先給出正整數m(m≤20),隨後是m個整數,其間以空格分隔。
【輸出】
僅一行。按照數字給出的順序輸出不是兩陣列共有的元素,數字間以空格分隔。題目保證至少存在乙個這樣的數字,同一數字不重複輸出。
【樣例輸入】
10 3 -5 2 8 0 3 5 -15 9 100
11 6 4 8 2 6 -5 9 0 100 8 1
【樣例輸出】
3 5 -15 6 4 1
1、解決思路
設立三個整型陣列a,b,c。a和b是待輸入的兩個陣列,c用來儲存兩陣列的非公有元素。
由a開始遍歷a中的每乙個元素,乙個乙個與b中的元素比較,如果a[i]與b中所有元素都不同,那麼a[i]就是a的獨有元素;同理,遍歷b中的每乙個元素,與a中每個元素進行比較,如果都不同,則此元素為b的獨有元素。
可以設定乙個變數k,每當a中某個元素與b中元素不同時,k自增1,全部不同的話,k的值應該為m(即b陣列中元素個數)。同理,當b中的某個元素與a中元素全部不相同時,k的值應該為n。需要注意的是,每比較完乙個值,k都應該重置為0,重新記錄。
最終得到的初始陣列c中會有重複元素,可以通過相同的方法,將c[i]與之前的值逐一比較,最終將沒有重複的值乙個個輸出。
2、具體**
#include
#include
intmain()
scanf
("%d"
,&m)
;int b[m]
;for
(j=0
;j)for
(i=0
;iif(k==m)
}for
(j=0
;jif(k==n)
}for
(i=0
;iif(k==i)
}}
3、具體樣例
10113
105614
10514
101065
182169
421511314
10182
169415
process returned 0
(0x0
) execution time :
1.660 s
press any key to continue
.
此**雖然能求出兩個陣列之間的非公共元素,但是其比較的過程過於繁雜,並不是乙個精簡的**,有待改進。如有不當之處或需要改進的地方,望請指正!謝謝。 求兩個有序整型陣列的交集
有兩個有序的整型陣列a和b 沒有重複元素 他們的長度分別為lena和lenb,求出他們的共同元素。例如 a 0,1,3,5,7,9,11 b 2,3,4,7,11 它們的交集為。求交集的方法有很多種,但陣列的長度會影響演算法的效率。2.1.1 二路歸併 對於陣列a,b分別以i,j從頭遍歷陣列。如果當...
找出不是兩個陣列共有的元素
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 張彤彧 浙江大學 給定兩個整型陣列,本題要求找出不是兩者共有的元素。輸入格式 輸入分別在2行中給出2個整型陣列,每行先給出正整數n 20 隨後是n個整數,其間以空格分隔。輸出格式 在一行中...
找出不是兩個陣列共有的元素
給定兩個整型陣列,本題要求找出不是兩者共有的元素。輸入格式 輸入分別在兩行中給出兩個整型陣列,每行先給出正整數n 20 隨後是n個整數,其間以空格分隔。輸出格式 在一行中按照數字給出的順序輸出不是兩陣列共有的元素,數字間以空格分隔,但行末不得有多餘的空格。題目保證至少存在乙個這樣的數字。同一數字不重...