PTA L1-020 帅到没朋友(详解)

news2024/11/18 12:26:36

前言:本期是关于帅到没朋友的详解,内容包括四大模块:题目,代码实现,大致思路,代码解读

今天你c了吗?

题目: 

 

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

输入格式:

输入第一行给出一个正整数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 n = 0;
    scanf("%d", &n);
    int i = 0;
    int arr[100000] = { 0 };
    for (i = 0; i < n; i++)
    {
        int k = 0;
        scanf("%d", &k);
        int j = 0;
        for (j = 0; j < k; j++)
        {
            int tmp = 0;
            scanf("%d", &tmp);
            if (k != 1)
            {
                arr[tmp] += k;
            }
        }
    }
    int m = 0;
    scanf("%d", &m);
    int flag = 0;
    for (i = 0; i < m; i++)
    {
        int num = 0;
        scanf("%d", &num);
        if (arr[num] == 0)
        {
            if (flag != 0)
            {
                printf(" ");
            }
            printf("%05d", num);
            flag = 1;
            arr[num] = 1;
        }
    }
    if (flag == 0)
    {
        printf("No one is handsome");
    }
    return 0;
}

大致思路: 

预备了解:

arr数组:每一个空间存储一个人的朋友数

flag:检验此人是否没有朋友

1. 将输入的每一个人的id号作为数组下标,唯一地对应一个数组空间

2. 没有朋友的人(即要打印)其作为下标所对应的数组空间内朋友数为0

    故而打印的条件:数组的某一个空间中放置的是0

     打印出此人信息后,其作为下标所对应的数组空间内置1

    这样可以实现:同一个人可以被查询多次,但只输出一次

    有朋友的人 (即不要打印)其作为下标所对应的数组空间内朋友数不为0

代码解读:

part 1:创建存储每人朋友人数的数组并初始化


    int n = 0;
    scanf("%d", &n);
    int i = 0;
    int arr[100000] = { 0 };
    for (i = 0; i < n; i++)
    {
        int k = 0;
        scanf("%d", &k);
        int j = 0;
        for (j = 0; j < k; j++)
        {
            int tmp = 0;
            scanf("%d", &tmp);
            if (k != 1)
            {
                arr[tmp] += k;
            }
        }
    }

将输入的个人的id号作为下标,对应唯一的空间

若是当前朋友圈里的人数为1:代表此人没朋友,只有自己

那就无需给其对应的空间置值,其空间内容已经是0了

若是当前朋友圈里的人数不为1:代表此人有朋友

在其作为下标所对应的数组空间中放置此人朋友圈的人数

part 2

    int m = 0;
    scanf("%d", &m);
    int flag = 0;
    for (i = 0; i < m; i++)
    {
        int num = 0;
        scanf("%d", &num);
        if (arr[num] == 0)
        {
            if (flag != 0)
            {
                printf(" ");
            }
            printf("%05d", num);
            flag = 1;
            arr[num] = 1;
        }
    }

若是查询的id号作为下标时所唯一对应的数组空间中的值是0:此人没朋友,需要打印

%05d:打印5个占位符,不足则补0

打印之后,flag置1,表示出现了帅的没朋友的人,同时我们需要注意:

1.题目说明:同一个人可以被查询多次,但只输出一次

故而,在打印完一个没朋友的人后,需要将此人id作为下标对应的空间内容置1

2.打印格式:输出的第一个前面无需空格,从第二个开始往后需要输出空格再输出id号

                      条件:flag!=0

                       因为flag是在打印之后才置1的,第一个的前面没有打印,所以打印第一个时flag=0

part 3

    if (flag == 0)
    {
        printf("No one is handsome");
    }

若是走完前面的代码没有将flag置成1,说明每个人都有朋友 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/192075.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何将视频制作成高清gif?试试这一招快速完成

随着现在短视频平台的兴起&#xff0c;越来越多的小伙伴在刷到好玩有趣的视频时都会下载下来&#xff0c;进行分享。但是&#xff0c;视频的体积往往比较大&#xff0c;传输起来非常的不方便。这时候就可以将视频转换成gif动图来使用。接下来&#xff0c;小编给大家分享几个视频…

CobaltStrike之宏钓鱼及shellcode 实验详细

文章目录预备知识实验目的实验地址实验环境实验步骤一启动cs服务器客户端连入服务器生成office宏病毒利用宏病毒上线CS生成宏文件利用成功实验步骤二实验步骤三预备知识 CobaltStrike是一款渗透测试神器&#xff0c;常被业界人称为CS神器。CobaltStrike已经不再使用MSF而是作为…

css图片铺满浏览器窗口且不变形

今天项目中提到一个需求&#xff0c;需要把背景图片铺满浏览器全屏&#xff0c;且图片不变形。 也就是说显示的宽高是不确定的&#xff0c;我第一反应就是background-size: 100% 100%;但是这样做有一个弊端。 下面结合代码图具体讨论一下&#xff1a; 首先&#xff0c;设计一个…

请求上下文头信息:User-Agent ,Referer,Form,Server,Allow,Accept-Range

User-Agent User-Agent 的组成 由1个product和后面零个或多个product信息组成 product包含两个部分&#xff0c;token和token指向的软件的版本号 举例中 Mozilla 5.0 表示浏览器兼容Mozilla 5.0版本的&#xff0c;后面的window 信息&#xff0c;就属于conment部分 RWS由一个…

36. 实战:基于上一节的全面升级——实现某音批量下载功能

目录 前言 目的 思路 代码实现 1. 先将下载单个视频的功能封装成函数 2. 获取下载列表 3. 创建线程池调用下载函数 完整源码 运行效果 总结 前言 上一节我们实现了某短视频平台的去水印下载功能&#xff0c;本节我们实现批量抓取&#xff1a;给定某一个用户主页&…

Cache的PLRU替换策略

LRU(Least Recently Used)替换策略是cache的经典替换策略之一,然而,LRU替换策略的硬件开销较大。因此,一些现代处理器,例如Intel 486和PowerPC,它们使用的cache替换策略是PLRU(pseudo-LRU)。 PLRU是LRU的一种近似方法,本文介绍PLRU中的tree-PLRU(tree-based pseudo-…

VSCode 配置 C/C++ 开发环境( MSVC )

0.绿色版本下载地址&#xff1a;https://www.aliyundrive.com/s/DMK13owZSrC绿色版本采用 VSCode User 1.7.4.2 X64 版本。绿色便携版本采用的生成工具来自 Visual C 2010 版本提供的 32 位工具链。Win 7 Win10 Win 11 可以正常运行。使用方法&#xff0c;下载文件后&#xff0…

微信小程序021理发店美容预约系统java nodejs php

美容预约小程序微信端要求在系统的手机上可以运行&#xff0c;主要实现了管理端&#xff1b;首页、个人中心、用户管理、服务项目管理、美容师管理、预约管理、类型管理、系统管理&#xff0c;微信端&#xff1b;首页、预约、我的等主要功能模块的操作和管理。 小程序前端框架&…

ML LightGBM详细原理讲解+面试必考知识点

&#x1f604; 三大竞赛杀器&#xff1a;XGBoost、LightGBM、CatBoost。之前我已更新完XGBoost的讲解&#xff0c;这次来讲讲LightGBM。我也是看网上看了多篇文章做总结的(我是遇到不会问题的就去搜&#xff0c;实在记不起来看过哪些&#xff0c;如果有侵权问题&#xff0c;可私…

Spark 读取、写入时序数据库TDengine以及TDengine概述

一、TDengine是什么TDengine 是一款高性能、分布式、支持 SQL 的时序数据库&#xff0c;其核心代码&#xff0c;包括集群功能全部开源&#xff08;开源协议&#xff0c;AGPL v3.0&#xff09;。TDengine 能被广泛运用于物联网、工业互联网、车联网、IT 运维、金融等领域。除核心…

Postman form-data、x-www-form-urlencoded的区别

我们在平时的postman请求调试&#xff0c;以及web的http请求开发时&#xff0c;常常能看到以下几种传参的形式 form-data、x-www-form-urlencoded、raw、binary&#xff0c;那么这些请求方式的区别是什么呢&#xff1f; 1、form-data: 就是http请求中的multipart/form-data,它…

一文读懂!2023量子计算行业发展方向

&#xff08;图片来源&#xff1a;网络&#xff09;量子计算是一个引人入胜的主题&#xff0c;放眼全球&#xff0c;很多文章报道了商业量子计算的项目和应用&#xff0c;关于量子计算行业在2023年的可能发展方向&#xff0c;本文从大量文章中筛选罗列了一些主要发展方向。McKi…

postman生成测试报告

一、newman插件生成测试报告安装nodejs官网下载适合自己设备的包&#xff0c;下载后直接傻瓜式安装&#xff1b;安装完成验证&#xff1a;打开终端&#xff0c;输入 node -v&#xff0c;即可查看安装版本&#xff1b;安装newman安装好nodejs后&#xff0c;通过npm来安装newman&…

VueJS 基础之组件

文章目录参考描述组件化开发组成templatescriptstylemain.js使用嵌套关系组件的使用LeftRight举个栗子全局组件及私有组件私有组件全局组件举个栗子main.jsApp.vue参考 项目描述VueJS官方文档搜索引擎Bing哔哩哔哩黑马程序员 描述 项目描述Edge109.0.1518.70 (正式版本) (64 …

计算机网路6-详述网路层:数据交换、路由算法和协议、网络协议

一、网络层基本概念 1、主要任务 把分组从源端传到目的端&#xff0c;为分组交换网上的不同主机提供通信服务 2、网络层传输单位--数据报 数据报与分组之间关系&#xff1a; 分组是数据报通过切割划分出来的一个片段&#xff0c;多个分组组成数据报 3、网络层的几大功能 路…

LeetCode-122. 买卖股票的最佳时机 II

目录暴力递归动态规划贪心题目来源 122. 买卖股票的最佳时机 II 暴力递归 根据题意&#xff1a;由于不限制交易次数&#xff0c;在每一天&#xff0c;就可以根据当前是否持有股票选择相应的操作。「暴力搜索」在树形问题里也叫「回溯搜索」、「回溯法」。 首先画出树形图&…

如何实现报表集成?(二)——用户同步和单点登录

在上一篇&#xff0c;我们对报表集成进行了一个整体的介绍&#xff0c;从报表集成的背景、痛点、需求、集成架构等几个方面进行了阐述。 这一篇&#xff0c;我们来聊一下用户同步和单点登录。行文过程中得到了来自报表软件厂商 Smartbi 的报表产品&#xff1a;电子表格软件的协…

c++11 标准模板(STL)(std::multiset)(三)

定义于头文件 <set> template< class Key, class Compare std::less<Key>, class Allocator std::allocator<Key> > class multiset;(1)namespace pmr { template <class Key, class Compare std::less<Key>> usi…

怎么给视频配音好听?这些好方法快学起来

应该不少小伙伴每天都会刷各种短视频&#xff0c;有些视频很搞笑&#xff0c;有些却很无趣&#xff0c;让人想直接的划走。很多制作短视频的小伙伴应该都知道&#xff0c;很多视频都需要配音来衬托&#xff0c;吸引别人的眼球。当你想给自己的视频配上好听的声音&#xff0c;但…

QT/C++——网络编程

目录 一、基础知识复习 二、UDP 客户端&#xff1a; 服务器&#xff1a; 三、TCP 服务器&#xff1a; 客户端&#xff1a; 四、小项目 客户端&#xff1a; 服务器&#xff1a; 一、基础知识复习 这部分内容前面讲的比较详细&#xff0c;现在就是简单复习一下。 两台主…