口罩发放(C语言实现)

news/2024/7/7 19:41:20

为了抗击来势汹汹的 COVID19 新型冠状病毒,全国各地均启动了各项措施控制疫情发展,其中一个重要的环节是口罩的发放。

某市出于给市民发放口罩的需要,推出了一款小程序让市民填写信息,方便工作的开展。小程序收集了各种信息,包括市民的姓名、身份证、身体情况、提交时间等,但因为数据量太大,需要根据一定规则进行筛选和处理,请你编写程序,按照给定规则输出口罩的寄送名单。
可以AC的解答请参考天梯赛练习集 L2-034 口罩发放(25分)史前巨细,坑点满满
按照如下做法,只得到了19分,有测试点未通过。还没有想出来怎么解决这个问题。
pta运行结果

#include <stdio.h>
#include <string.h>

typedef struct Person{
    char name[11];
    char id[21];
    int status;
    char time[6];
    int cnt;
}Person;

int main(){
    int d, p, i, j, k, t, s, len_id, itmp;
    Person person[1000], total[30000], tmp;
    int scnt = 0, tcnt = 0, flag = 0;
    
    scanf("%d%d", &d, &p); //输入数据
    for (i=0; i<30000; i++){
        total[i].cnt = 0;
    }
    for (i=0; i<d; i++){
        scanf("%d%d", &t, &s);
        scnt = 0;
//         for (j=0; j<t; j++){
//             person[j].cnt = 0;
//         }
        for (j=0; j<t; j++){ //输入申请人的信息
            scanf("%s %s %d %s", person[j].name, person[j].id, &person[j].status, person[j].time);
//            scanf("%d %s", &person[j].status, person[j].time);
            flag = 0;
            len_id = strlen(person[j].id);
            person[j].cnt = 0;
            if (len_id != 18){
                continue;
            }
            for (k=0; k<tcnt; k++){
                /*printf("k = %d\n", k);*/
                if (strcmp(person[j].id, total[k].id) == 0){
                    flag = 1;
                    person[j].cnt = total[k].cnt; 
                    /*printf("welcome boys and girls, cnt = %d\n", person[j].cnt);*/
                    if (person[j].status == 1){
                        total[k].status = person[j].status;
                    }
                    break;
                }
            }
            /*printf("flag = %d\n", flag);*/
            if (flag==0 && len_id==18){
                total[tcnt] = person[j];
                tcnt++;
            }
            /*if (flag == 1){
                printf("This has existed.\n");
            }*/
        }
        for (j=0; j<t-1; j++){ //按照提交时间先后顺序排序
            for (k=j+1; k<t; k++){
                if (strcmp(person[j].time, person[k].time) > 0){
                    tmp = person[j];
                    person[j] = person[k];
                    person[k] = tmp;
                }
            }
        }
        
        for (j=0; j<t; j++){
            len_id = strlen(person[j].id);
            if (len_id<18 || len_id>18){
                continue;
            }
            /*printf("hey cnt = %d\n", person[j].cnt);*/
            for (k=0; k<tcnt; k++){
                if (strcmp(person[j].id, total[k].id) == 0){
                    if (total[k].cnt > 0){
                        total[k].cnt++;
                        if (total[k].cnt == p+1){
                            total[k].cnt = 0;
                        }
                        person[j].cnt = total[k].cnt;
                    }
                }
            }
            if (person[j].cnt==0){
                scnt++;
                person[j].cnt++;
                if (scnt <= s){
                    printf("%s %s\n", person[j].name, person[j].id);
                    for (k=0; k<tcnt; k++){
                        if (strcmp(person[j].id, total[k].id) == 0){
                            total[k].cnt = person[j].cnt;
                        }
                    }
                }
            }
        }
        
//         printf("打印\n");
//         for (j=0; j<t; j++){
//             printf("%s %s", person[j].name, person[j].id);
//             printf(" %d %s\n", person[j].status, person[j].time);
//         }
    }
    
    /*printf("tcnt = %d\n", tcnt);*/
    for (i=0; i<tcnt; i++){
        if (total[i].status == 1){
            printf("%s %s\n", total[i].name, total[i].id);
        }
    }
    /*printf("tcnt = %d\n", tcnt);
    for (i=0; i<tcnt; i++){
        printf("%s %s", total[i].name, total[i].id);
        printf(" %d %s\n", total[i].status, total[i].time);
    }*/
    
    return 0;
}

http://lihuaxi.xjx100.cn/news/1007322.html

相关文章

原来企业的生产管理这么简单

&#x1f31f;所属专栏&#xff1a;ERP企业资源管理&#x1f414;作者简介&#xff1a;rchjr——五带信管菜只因一枚&#x1f62e;前言&#xff1a;该系列将持续更新ERP的相关学习笔记&#xff0c;欢迎和我一样的小白订阅&#xff0c;一起学习共同进步~&#x1f449;文章简介&a…

WooCommerce可扩展性:如何扩大您的WooCommerce商店

有了合适的人和技术&#xff0c;WooCommerce可扩展性绝对是很大的&#xff01; 事实上&#xff0c;使用WooCommerce作为您的电子商务平台&#xff0c;您的在线商店的规模可以与您的目标和愿望一样大&#xff01; 根据自定义模板开发高性能品牌电子商务网站 全球超500万个电商…

本地打开dist文件

npm run build打包后 cd dist http-server 没有http-server&#xff0c;npm install -g http-server http-server

开源蜜罐hfish安装及使用教程

一、hfish安装 xshell上传hfish-3.3.1-linux-amd64.tgz 创建解压目录 [root@localhost ~]# mkdir hfish 解压 [root@localhost ~]# tar zxvfhfish-3.3.1-linux-amd64.tgz-C hfish 防火墙开启4433、4434和7879,确认返回success。 [root@localhost ~]# iptables -I INPUT -…

Java实现将正整数分解质因数例输入100输出100=2×2×5×5,判断100-200之间有多少素数这两个代码程序

目录 前言 一、实现将正整数分解质因数例输入100输出1002255 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 1.3运行截图 二、判断100-200之间有多少素数 1.1运行流程&#xff08;思想&#xff09; 1.2代码段 1.3运行截图 前言 1.因多重原因&#xff0c;本博文…

IDEA的Git操作

1、在Idea中配置Git 安装好IDEA后&#xff0c;如果Git安装在默认路径下&#xff0c;那么IDEA会自动找到git的位置&#xff0c;如果更改了git的安装位置则需要手动配置git的路径。选择File->Settings打开窗口&#xff0c;找到Version Control下的git选项。 2、在GitHub或码云…

多维时序 | MATLAB实现CNN-LSTM-Attention多变量时间序列预测

多维时序 | MATLAB实现CNN-LSTM-Attention多变量时间序列预测 目录多维时序 | MATLAB实现CNN-LSTM-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料预测效果 基本介绍 MATLAB实现CNN-LSTM-Attention多变量时间序列预测&#xff0c;CNN-LSTM结合注意力机制…

方法int maxDigit(int n)的功能是通过while循环找出十进制整数各位中最大的一位数字。例如n=13569,该方法的返回值是9。

package day_2023_4_6;import java.util.Scanner;public class Demo3 {public static void main(String[] args) {System.out.println("请输入一个整数&#xff1a;");Scanner scannernew Scanner(System.in);int nscanner.nextInt(); //实参和形参名可以相同Demo3 d…