原题链接:蓝桥杯算法提高VIP-彩票
解题思路:
注意事项:
参考代码:
#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;//大功告成 }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复