zoukankan      html  css  js  c++  java
  • 1069. 微博转发抽奖(20)

    原题: https://www.patest.cn/contests/pat-b-practise/1069

    思路: 新开个数组维护一份中奖者名单, 用来判重复. 最关键的就是, 若果此人
    已经中过将, 继续判断下一个人, 因为一个人可能连续转发多条, 也就是需要
    循环判断, 直到直到一个全新的用户为止.

    实现:

    #include <stdio.h>
    #include <string.h>
    
    #define LEN1 1010
    #define LEN2 30
    int isPrise (char pname[][LEN2], int plen, char search[]);
    
    int main (void) {
        int m;   // 转发的总量
        int n;   // 中奖间隔
        int s;   // 第一位中奖者的序号(从1开始)
        int i;
        char name[LEN1][LEN2];   // 网友的昵称(从1开始) 
        char pname[LEN1][LEN2];  // 维护一份中奖名单
        int plen = 0;            // 中奖名单长度
    
        scanf("%d %d %d", &m, &n, &s);
        for (i = 1; i <= m; i++) {
            scanf("%s", name[i]);
        }
        if (s > m) {
            printf("Keep going...
    ");
        } else {
            i = s;
            while (i <= m) {
                while (isPrise(pname, plen, name[i]) != 0 && i <= m) {
                    i++;
                }
                if (i <= m) {
                    printf("%s
    ", name[i]);
                    strcpy(pname[plen++], name[i]);
                    i += n;
                }
            }
        }
    
        return 0;
    }
    
    // 已经中过奖返回1, 没中过返回0
    int isPrise (char pname[][LEN2], int plen, char search[]) {
        int i;
        for (i = 0; i < plen; i++) {
            if (strcmp(pname[i], search) == 0) {
                return 1;
            }
        }
        return 0;
    }
    
    
  • 相关阅读:
    Operator开发实例
    Go构建HTTP服务
    Go依赖包的管理
    Go并发编程机制
    Go语言的基础数据类型
    k8s的APIServer流程介绍
    promise、resolve、reject、拦截响应
    AngularJS中service,factory,provider的区别
    scope
    sass入门
  • 原文地址:https://www.cnblogs.com/asheng2016/p/7898409.html
Copyright © 2011-2022 走看看