PTA帅到没朋友,天梯模拟赛

    xiaoxiao2021-03-25  137

    11 帅到没朋友   (20分)

    当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。

    输入格式:

    输入第一行给出一个正整数N(\le 100100),是已知朋友圈的个数;随后N行,每行首先给出一个正整数K(\le 10001000),为朋友圈中的人数,然后列出一个朋友圈内的所有人——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(\le 1000010000),为待查询的人数;随后一行中列出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> #include <string.h> int f[199999]; int main() { int n, m, i, j = 0, x, y; scanf("%d", &n); memset(f, 0, sizeof(f));//初始0/ while(n--) { scanf("%d", &m); if(m > 1)//判断朋友圈人数是否大于一,大于一存起来/ { for(i = 0;i < m;i++) { scanf("%d", &x); f[x]++; } } else scanf("%d", &x); } scanf("%d", &m); while(m--) { scanf("%d", &y); if(!f[y]) { if(!j) { printf("d", y);//注意根据题意必须是5位/ f[y]++; j++; } else { printf(" d", y); f[y]++; } } } if(!j) printf("No one is handsome"); printf("\n"); return 0; } 方法二:

    这是我比赛的代码,当时数据没有全过,后来改了一下,我也没有注意到必需是5位。这个方法的话,主要是用二维数组进行存储,每行的第一项要存这一行的项数。

    #include <stdio.h> int f[111][1111]; int main() { int n, m, i, j, k, x, sum[111], y = 0; scanf("%d", &n); for(i = 0;i < n;i++) { scanf("%d", &m); f[i][0] = m; for(j = 1;j <= m;j++) { scanf("%d", &f[i][j]); } } scanf("%d", &k); while(k--) { scanf("%d", &x); int flag = 1; for(i = 0;i < n;i++) { m = f[i][0]; for(j = 1;j <= m;j++) { if(x == f[i][j]&&m > 1) { flag = 0; break; } } } if(flag) { int c = 1; for(i = 0;i < y;i++) { if(x == sum[i]) { c = 0; break; } } if(c) sum[y++] = x; } } if(y) { for(i = 0;i < y;i++) { if(i == y - 1) printf("d\n", sum[i]); else printf("d ", sum[i]); } } else printf("No one is handsome\n"); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-8606.html

    最新回复(0)