【PTA】L1-020 帅到没朋友

https://pintia.cn/problem-sets/994805046380707840/problems/994805117167976448

解析

PTA 还是一样卡语言,Java 得 17 分,TLE 最后一个点。

这个题需要注意朋友圈只有一个人的情况,一个表示没有朋友,输出的时候要满足五位数,小于五位数需要补零。

AC Code

import java.io.*;
import java.math.*;
import java.util.*;

public class Main {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer st = new StreamTokenizer(br);
    static PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));

    public static void main(String[] args) throws Exception {
        int n = nextInt();
        int[] vis = new int[100000];
        while(n-- != 0) {
            int k = nextInt(); // 朋友个数
            for(int i = 1; i <= k; i++) {
                int id = nextInt(); // 朋友ID
                if(vis[id] != 0) vis[id]++; // 当ID已经存在时,朋友个数 +1
                else vis[id] = k; // 当ID不存在时,直接赋予朋友个数
            }
        }
        int m = nextInt();
        boolean flag = false;
        boolean headEmpty = false;
        while(m-- != 0) {
            int id = nextInt();
            if(vis[id] <= 1) { // 朋友个数小于或等于零的人表示没有朋友
                if(headEmpty) out.print(" ");
                out.printf("%05d", id);
                flag = true;
                vis[id] = 2; // 置为 2 ,防止重复询问
                headEmpty = true;
            }
        }
        if(!flag) out.println("No one is handsome");
        out.flush();
    }

    public static int nextInt() throws Exception {
        st.nextToken();
        return (int) st.nval;
    }

    public static String nextStr() throws Exception {
        st.nextToken();
        return st.sval;
    }
}

C 语言版 满分

#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    int vis[100000] = {0};
    while(n-- != 0) {
        int k;
        scanf("%d", &k);
        for(int i = 1; i <= k; i++) {
            int id;
            scanf("%d", &id);
            if(vis[id] != 0) vis[id]++;
            else vis[id] = k;
        }
    }
    int m;
    scanf("%d", &m);
    int flag = 0;
    int headEmpty = 0;
    while(m-- != 0) {
        int id;
        scanf("%d", &id);
        if(vis[id] <= 1) {
            if(headEmpty) printf(" ");
            printf("%05d", id);
            flag = 1;
            vis[id] = 2;
            headEmpty = 1;
        }
    }
    if(!flag) printf("No one is handsome");
    return 0;
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值