题解 P2550 【[AHOI2001]彩票摇奖】
P2550 C++ 普通题解(无高深算法)
这一题其实难度不大,不需要用什么特别的算法。
先理一理思路:
- 输入n,头奖号码,n个彩票号
- 逐一判断是x等奖
- 输出
申明数组:
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]<<" ";
}