7-22 帥到沒朋友 (20 分)
當芸芸眾生忙着在朋友圈中發照片的時候,總有一些人因為太帥而沒有朋友。本題就要求你找出那些帥到沒有朋友的人。
輸入格式:
輸入第一行給出一個正整數N
(≤100),是已知朋友圈的個數;隨后N
行,每行首先給出一個正整數K
(≤1000),為朋友圈中的人數,然后列出一個朋友圈內的所有人——為方便起見,每人對應一個ID號,為5位數字(從00000到99999),ID間以空格分隔;之后給出一個正整數M
(≤10000),為待查詢的人數;隨后一行中列出M
個待查詢的ID,以空格分隔。
注意:沒有朋友的人可以是根本沒安裝“朋友圈”,也可以是只有自己一個人在朋友圈的人。雖然有個別自戀狂會自己把自己反復加進朋友圈,但題目保證所有K
超過1的朋友圈里都至少有2個不同的人。
輸出格式:
按輸入的順序輸出那些帥到沒朋友的人。ID間用1個空格分隔,行的首尾不得有多余空格。如果沒有人太帥,則輸出No one is handsome
。
注意:同一個人可以被查詢多次,但只輸出一次。
輸入樣例1:
3 3 11111 22222 55555 2 33333 44444 4 55555 66666 99999 77777 8 55555 44444 10000 88888 22222 11111 23333 88888
輸出樣例1:
10000 88888 23333
輸入樣例2:
3 3 11111 22222 55555 2 33333 44444 4 55555 66666 99999 77777 4 55555 44444 22222 11111
輸出樣例2:
No one is handsome
#include <stdio.h> int main(){ int a[100000]={0}; int K,M,N; int k,m,t=0; scanf("%d",&N); for(int i=0;i<N;i++){ scanf("%d",&K); for(int j=0;j<K;j++){ scanf("%d",&k); if(K!=1) a[k]=1; } } scanf("%d",&M); for(int i=0;i<M;i++){ scanf("%d",&m); if(!a[m]){ if(!t) printf("%05d",m); else printf(" %05d",m); a[m]=1; t++; } } if(!t) printf("No one is handsome"); }
注意點:1.格式控制,補0;
2.帥到沒朋友的情況
3.時間復雜度太高了會差一個測試點
思路:將一個包含所有序號的數組置為0,朋友圈中出現的號碼都置為1,方便查詢,查詢的時候將已經查詢過的序號置為1,防止重復查詢;