找出不是兩個數(shù)組共有的元素
題目描述:
解題思路:
-
【整體思路】:在兩個整型數(shù)組中,找出不是兩者共有的元素,意思就是既要在第一個數(shù)組中找出第二個數(shù)組中沒有出現(xiàn)的元素,也要在第二個數(shù)組中找出第一個數(shù)組中沒有出現(xiàn)的元素。所以這里可以每個數(shù)組做一次主體,將主體數(shù)組中每一個元素在另一個數(shù)組中走一遍,如果沒有與其相等的元素,就入入一個臨時數(shù)組(另外需要的數(shù)組,用來存放在兩個整型數(shù)組中,不是兩者共有的元素),直到主體數(shù)組遍歷完再將另一個數(shù)組作為主體數(shù)組走一遍。當(dāng)兩個數(shù)組都走完后,臨時數(shù)組里面的元素就是想要的元素,但是,這里可能會有重復(fù)的元素(假如一個數(shù)組中有兩個3,而這個3在另外一個數(shù)組中沒有出現(xiàn),那么這個3在臨時數(shù)組中就有兩個),所以最后在打印臨時數(shù)組每個元素的時候需要往前尋找看有沒有相同的元素,如果有就不用打印了,因為前面出現(xiàn)的已經(jīng)打印過了。
-
據(jù)此,這里可以用兩個循環(huán)分別來找出在這個數(shù)組中出現(xiàn)而另一個數(shù)組沒有出現(xiàn)的元素。
-
兩個循環(huán)每一個循環(huán)都是嵌套了一層循環(huán),就是將當(dāng)前數(shù)組的每一個元素在另一個數(shù)組中走一遍。
代碼實現(xiàn):
#include <stdio.h>
int main()
{
// 目標(biāo)數(shù)組
int a1[20] = { 0 };
// 目標(biāo)數(shù)組
int a2[20] = { 0 };
// 臨時數(shù)組
int a3[20] = { 0 };
// 分別表示兩個數(shù)組的長度(元素個數(shù))
int n, m;
// 先輸入的表示 a1 的長度,然后輸入目標(biāo)數(shù)組 a1 的每個元素
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &a1[i]);
}
// 先輸入的表示 a2 的長度,然后輸入目標(biāo)數(shù)組 a2 的每個元素
scanf("%d", &m);
for (int i = 0; i < m; i++)
{
scanf("%d", &a2[i]);
}
// k 為臨時數(shù)組的索引
int k = 0;
for (int i = 0; i < n; i++)
{
// flag表示假設(shè)當(dāng)前元素在另一個數(shù)組中不出現(xiàn)
int flag = 1;
for (int j = 0; j < m; j++)
{
// 如果找到相同的元素,就將 flag 置為 0 ,假設(shè)不成立
if (a1[i] == a2[j])
{
flag = 0;
}
}
// 如果假設(shè)成功,就將當(dāng)前元素放入臨時數(shù)組
if (flag) a3[k ++] = a1[i];
}
for (int i = 0; i < m; i++)
{
int flag = 1;
for (int j = 0; j < n; j++)
{
if (a2[i] == a1[j])
{
flag = 0;
}
}
if (flag) a3[k++] = a2[i];
}
// 打印臨時數(shù)組的數(shù)據(jù),重復(fù)的只打印一次
for (int i = 0; i < k; i++)
{
int flag = 1;
// 向前尋找看有沒有相同元素
for (int j = 0; j < i; j++)
{
// 有就將 flag 置為 0 ,后面的 if 就不進(jìn)去
if (a3[i] == a3[j])
{
flag = 0;
}
}
// 如果 flag 為 1 ,說明當(dāng)前的元素沒有重復(fù),進(jìn)入 if
if (flag)
{
// 控制輸入格式,題目會檢查
if (!i)
{
// 如果是第一個元素就不打印空格
printf("%d", a3[i]);
}
else
{
// 將空格往前打印,因為最后不能有空格
printf(" %d", a3[i]);
}
}
}
return 0;
}
感謝閱讀本小白的博客,錯誤的地方請嚴(yán)厲指出噢~文章來源:http://www.zghlxwxcb.cn/news/detail-757956.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-757956.html
到了這里,關(guān)于【基礎(chǔ)算法】[PTA]-找出不是兩個數(shù)組共有的元素的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!