天天看點

帥到沒朋友的人-水題

時間限制 

200 ms 

記憶體限制 

65536 kB 

代碼長度限制 

8000 B 

判題程式 

Standard 

作者 

陳越 

當芸芸衆生忙着在朋友圈中發照片的時候,總有一些人因為太帥而沒有朋友。本題就要求你找出那些帥到沒有朋友的人。 

輸入格式: 

輸入第一行給出一個正整數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 11111 22222 55555 

2 33333 44444 

4 55555 66666 99999 77777 

55555 44444 10000 88888 22222 11111 23333 88888 

輸出樣例1: 

10000 88888 23333 

輸入樣例2: 

3 11111 22222 55555 

2 33333 44444 

4 55555 66666 99999 77777 

55555 44444 22222 11111 

輸出樣例2: 

No one is handsome

//經過修改和别人的代碼很像了,但是就是别人的比較好,我要繼續努力

#include<stdio.h>
#include<stdio.h>
int ID[100000] = {0 };
int main(){
    int N, i, j;//N是朋友圈個數
    int n;//朋友圈個數最多為100,這裡不用記錄,換方法了!
    int Wait[10000];//等待查詢的ID;
    int id;//臨時存儲ID
    int WaitNumber;
    int WaitJoin[1000];
    int WaitID[10000];
    scanf("%d", &N);
    for (i =0; i<N; i++){//記錄ID
        scanf("%d", &n);
        for (j =0; j<n; j++){
            scanf("%d", &id);
                ID[id] +=n;
        }
    }
    scanf("%d", &WaitNumber);
    int flag =0;
    for (i =0; i < WaitNumber; i++){
        scanf("%d", &id);
        if (ID[id]==0||ID[id]==1){
            if(flag!=0)
            printf(" ");
            printf("%05d", id);
            ID[id] = -1;
            flag = 1;
        }
    }
    if (flag ==0){
        printf("No one is handsome");
    }
    return0;
}      

·

貼上我上次的代碼

#include<stdio.h>
int ID[100000] = {0 };
int unique(int Arr[],int len){
    int length = len;
    int i, j;
    for (i =1; i < len; i++){
        for (j = i -1; j >= 0; j--){
            if (Arr[i] == Arr[j] && Arr[i] != -1){
                Arr[i] = -1;
                length--;
            }
        }
    }
    return length;
}
int Print(int Num){
    int Number = Num;
    int len =1;
    while (Number /10 != 0){
        Number /= 10;
        len++;
    }
    return len;
}
int Jundge(int WaitJoin[],int n){
    int i, j;
    for (i =0; i < n; i++){
        if (ID[WaitJoin[i]] ==0)
        for (j = i +1; j < n; j++){
            if (WaitJoin[i] != WaitJoin[j]){
                ID[WaitJoin[i]] = 1;
                ID[WaitJoin[j]] = 1;
            }
        }
    }
}
int main(){
    int N, i, j;//N是朋友圈個數
    int n;//朋友圈個數最多為100,這裡不用記錄,換方法了!
    int Wait[10000];//等待查詢的ID;
    int id;//臨時存儲ID
    int WaitNumber;
    int WaitJoin[1000];
    int WaitID[10000];
    scanf("%d", &N);
    for (i =0; i<N; i++){//記錄ID
        scanf("%d", &n);
        for (j =0; j<n; j++){
            scanf("%d", &WaitJoin[j]);
        }
        Jundge(WaitJoin, n);
    }
    scanf("%d", &WaitNumber);
    j = 0;
    for (i =0; i < WaitNumber; i++){
        scanf("%d", &id);
        if (ID[id] !=1){
            Wait[j] = id;
            j++;
        }
    }
    int flag =0;
    for (i =0; i < j; i++){
        if (ID[Wait[i]] ==0){
            if (flag !=0)
                printf(" ");
            printf("%05d", Wait[i]);
            ID[Wait[i]] = -1;
            flag = 1;
        }
    }
    //數組去重複
 
    if (flag ==0){
        printf("No one is handsome");
    }
    printf("\n");
    return0;
}