蓝桥杯 ADV-133 算法提高 彩票

栏目: 编程工具 · 发布时间: 7年前

内容简介:问题描述输入格式第一行一个正整数n,表示彩票数量,第二行7个整数,表示中奖号码,下面n行每行7个整数,描述n张彩票。

问题描述

为丰富男生节活动,贵系女生设置彩票抽奖环节,规则如下:

1、每张彩票上印有7个各不相同的号码,且这些号码的取值范围为[1, 33];

2、每次在兑奖前都会公布一个由七个互不相同的号码构成的中奖号码;

3、共设置7个奖项,特等奖和一等奖至六等奖。兑奖规则如下:

特等奖:要求彩票上的7个号码都出现在中奖号码中;

一等奖:要求彩票上的6个号码出现在中奖号码中;

二等奖:要求彩票上的5个号码出现在中奖号码中;

……

六等奖:要求彩票上的1个号码出现在中奖号码中;

注:不考虑号码出现的顺序,例如若中奖号码为23 31 1 14 19 17 18,则彩票12 8 9 23 1 16 7由于其中有两个号码(23和1)出现在中奖号码中,所以该彩票中了五等奖。

输入格式

第一行一个正整数n,表示彩票数量,第二行7个整数,表示中奖号码,下面n行每行7个整数,描述n张彩票。

输出格式

7个空格隔开的数字,第1个数字表示特等奖的中奖张数,第2个数字表示一等奖的中奖张数,第3个数字表示二等奖的中奖张数……第7个数字表示六等奖的中奖张数。

样例输入

3

1 2 3 4 5 6 7

11 12 13 14 15 16 17

12 13 14 15 16 17 18

样例输出

0 0 0 0 0 0 1

数据规模和约定

30%的数据n<=100;

70%的数据n<=1000;

100%的数据n<=100000。

*****提示:数组定义为全局变量,可以分配更多内存。*****

分析:1.m数组标记中奖号码,mt数组标记彩票号码

2.如果一个号码在中奖号码中出现多次,且彩票中也出现多次,要取他们的最小值,不能当成只中了一个号码哦~

#include <iostream>
using namespace std;
int main() {
    int n, m[34] = {0}, a[10] = {0};
    cin >> n;
    for (int i = 0; i < 7; i++) {
        int t;
        cin >> t;
        m[t]++;
    }
    while (n--) {
        int mt[34] = {0}, sum = 0;
        for (int i = 0; i < 7; i++) {
            int t;
            cin >> t;
            mt[t]++;
        }
        for (int i = 1; i <= 33; i++) 
            sum += min(mt[i], m[i]);
        a[7 - sum]++;
    }
    for (int i = 0; i < 7; i++) {
        cout << a[i] << " ";
    }
    return 0;
}
❤❤点击这里 -> 订阅PAT、蓝桥杯、GPLT天梯赛、LeetCode题解离线版❤❤ 蓝桥杯 ADV-133 算法提高 彩票

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Four

The Four

Scott Galloway / Portfolio / 2017-10-3 / USD 28.00

NEW YORK TIMES BESTSELLER USA TODAY BESTSELLER Amazon, Apple, Facebook, and Google are the four most influential companies on the planet. Just about everyone thinks they know how they got there.......一起来看看 《The Four》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试