乙級 PAT 1065 單身狗 25

2021-08-16 02:26:10 字數 1260 閱讀 6316

「單身狗」是中文對於單身人士的一種愛稱。本題請你從上萬人的大型派對中找出落單的客人,以便給予特殊關愛。

輸入格式:

輸入第一行給出乙個正整數n(<=50000),是已知夫妻/伴侶的對數;隨後n行,每行給出一對夫妻/伴侶——為方便起見,每人對應乙個id號,為5位數字(從00000到99999),id間以空格分隔;之後給出乙個正整數m(<=10000),為參加派對的總人數;隨後一行給出這m位客人的id,以空格分隔。題目保證無人重婚或腳踩兩條船。

輸出格式:

首先第一行輸出落單客人的總人數;隨後第二行按id遞增順序列出落單的客人。id間用1個空格分隔,行的首尾不得有多餘空格。

輸入樣例:

3

11111 22222

33333 44444

55555 66666

755555 44444 10000 88888 22222 11111 23333

輸出樣例:
5

10000 23333 44444 55555 88888

設計了乙個方法,只用乙個int[100000]陣列來解決問題:

一對夫婦id儲存在陣列中兩個元素中,形成雙向的對映,這個基本所有人都是這麼做的

逐一讀取來客id

如果id有對應值,說明有配偶,陣列相應位置置0

如果id沒有對應值,說明是單身狗,陣列相應位置置-1

遍歷陣列,不管值為0和-1的。如果乙個id對應有值,而這個值對應0,說明id沒有來,而他/她的配偶來了。也置為-1

再遍歷一次,值為-1的輸出

id是有00000的,和標記值0衝突了,我解決的方法是將id都+1(一開始沒有ac的原因)

#include int main()

, n, id1, id2, m, count = 0;

scanf("%d", &n);

for(int i = 0; i < n; i++)

scanf("%d", &m);

for(int i = 0; i < m; i++)

}for(int i = 0; i < 100001; i++) if(couple[i] > 0 && !couple[couple[i]])

printf("%d\n", count);

for(int i = 0; i < 100001; i++) if(couple[i] == -1)

printf("%05d%c", i - 1, --count ? ' ' : '\0');

return 0;

}

乙級pat 1065 單身狗

1065 單身狗 25 分 單身狗 是中文對於單身人士的一種愛稱。本題請你從上萬人的大型派對中找出落單的客人,以便給予特殊關愛。輸入格式 輸入第一行給出乙個正整數 n 50 000 是已知夫妻 伴侶的對數 隨後 n 行,每行給出一對夫妻 伴侶 為方便起見,每人對應乙個 id 號,為 5 位數字 從 ...

PAT 1065 單身狗 25 分

單身狗 是中文對於單身人士的一種愛稱。本題請你從上萬人的大型派對中找出落單的客人,以便給予特殊關愛。輸入第一行給出乙個正整數 n 50 000 是已知夫妻 伴侶的對數 隨後 n 行,每行給出一對夫妻 伴侶 為方便起見,每人對應乙個 id 號,為 5 位數字 從 00000 到 99999 id 間以...

PAT乙級 1065 單身狗 25

原題鏈結 單身狗 是中文對於單身人士的一種愛稱。本題請你從上萬人的大型派對中找出落單的客人,以便給予特殊關愛。輸入格式 輸入第一行給出乙個正整數n 50000 是已知夫妻 伴侶的對數 隨後n行,每行給出一對夫妻 伴侶 為方便起見,每人對應乙個id號,為5位數字 從00000到99999 id間以空格...