大家有没有发现数据范围好小呀
我们只需要开7~8的数组就好!!
中间比较的时候懒得用for循环比较了。直接爆搜。
废话不多说,直接上代码。
#include<bits/stdc++.h> using namespace std; int a[7];//作为中奖号码 int b[7];//作为每一回彩票号码 int c[7];//作为中奖的等级 int main() { int n; cin>>n;//彩票张数 for(int i=0;i<7;i++) { cin>>a[i];//输入中奖号码。 } for(int i=0;i<n;i++)//n张,循环n次 { int sum=0;//每一张相同的个数,每次循环初始化为0; for(int j=0;j<7;j++)//输入彩票号 { cin>>b[j]; } for(int j=0;j<7;j++)//精髓。因为数据较小,所以每一回懒得用for循环对比,直接暴力比较 { if(b[j]==a[0]||b[j]==a[1]) sum++; else if(b[j]==a[2]||b[j]==a[3]) sum++; else if(b[j]==a[4]||b[j]==a[5]) sum++; else if(b[j]==a[6]||b[j]==a[7]) sum++; } c[sum-1]+=1;//注意点这里大家应该会有问题,一会就明白了。不过###一定要减一###不多说,自己想。 } for(int i=6;i>=0;i--)//我们反序存的奖级。就反序输出就好啦。 { cout<<c[i]<<" ";//输出 } return 0;//程序拜拜。 }
搜索还可以这么写
for(int j=0;j<7;j++) { for(int k=0;k<7;k++) { if(b[j]==a[k]) sum++; } } c[sum-1]+=1;
好哒,没了