解题思路:





注意事项:





参考代码:

#include <iostream>
#include <algorithm>
using namespace std;
int jdj(int*y,int*x)//为“几等奖”的拼音,高大上的含数 (语文老师:你可千万别说语文是我教的){    int z[8],tj=0;//中奖统计 
    for(int ii=1;ii<=7;ii++)
        z[ii]=y[ii];//为保证源数据不变,定义新数据并赋值 
    for(int ii=1;ii<=7;ii++)        
    for(int j=1;j<=7;j++)            
    if(x[ii]==z[j])//如果有号码相等,则判定为中奖 
            {
                tj++;//别忘了,几等奖就有七减几个数对应 
                z[j]=-1;//这个非常非常重要!要不然你会被这种数据卡:中奖:1 2 3 4 5 6 7,小明:1 1 1 1 1 1 1,明显应为六等奖,但若无这句,就为特等奖 
                break;//不break会导致tj为负数(有可能)
            }    return 7-tj;//中奖回馈,7为未中奖,0为特等奖 }
    int main(){    
    int n;    
    cin>>n;    
    int a[8],c[8];//a为中奖号码,c是中奖情况 (b作为循环变量了qwq) 
    for(int i=1;i<=7;i++)//读入中奖号码 
    { 
        cin>>a[i];
        c[i]=0;
    } 
    for(int i=1;i<=n;i++)
    {        int b[8];//b是小明选的号码
        for(int j=1;j<=7;j++)//读入小明选的号码 
            cin>>b[j];
        sort(b+1,b+8);//最好用的sort排序 
        int m=jdj(a,b);//求几等奖 
        if(7-m)c[m+1]++;//存入对应数组 
    }    for(int i=1;i<=7;i++)//输出中奖情况 
        cout<<c[i]<<' '/*这个空格不能少,要不然你就全哇(WA)了*/;   
     return 0;//大功告成 
     }


点赞(2)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论