题解 P2550 【[AHOI2001]彩票摇奖】

· · 题解

P2550 C++ 普通题解(无高深算法)

这一题其实难度不大,不需要用什么特别的算法。

先理一理思路:

  1. 输入n,头奖号码,n个彩票号
  2. 逐一判断是x等奖
  3. 输出

申明数组:

short a[7],c[7];

a:头奖号码;c:x等奖中奖次数 输入之一:

short n,t,f;//n:就是n;  t&f:等会解释
cin>>n;
for(int i=0;i<7;i++)cin>>a[i];

这时我们可以发现,不必要将彩票号存入数组,直接将每个数字判断,即可。 输入之二+核心代码:

    for(int i=0;i<n;i++)
    {
        f=0;
        for(int j=0;j<7;j++)
        {

            cin>>t;
            for(int ii=0;ii<7;ii++)//依次查找
                if(a[ii]==t)
                    f++;
        }
        c[7-f]++;
    }

t:每一次的输入号码;f:每一次的中奖号统计

最后,输出:

    for(int i=0;i<7;i++)
        cout<<c[i]<<" ";

全篇AC代码:

#include<iostream>
using namespace std;
short a[7],c[7];
int main()
{
    short n,t,f;
    cin>>n;
    for(int i=0;i<7;i++)cin>>a[i];
    for(int i=0;i<n;i++)
    {
        f=0;
        for(int j=0;j<7;j++)
        {

            cin>>t;
            for(int ii=0;ii<7;ii++)if(a[ii]==t)f++;
        }
        c[7-f]++;
    }
    for(int i=0;i<7;i++)cout<<c[i]<<" ";
}

完结