P2550 [AHOI2001]彩票摇奖和P2615 [NOIP2015 提高组] 神奇的幻方(洛谷oj)

P2550 [AHOI2001]彩票摇奖
题目描述:
在这里插入图片描述
在这里插入图片描述
思路:这道题思路很简单,就是先让你输入一个固定的中奖号码,再输入n行彩票号码(即小明买了n张彩票),将每行彩票号码与中奖号码进行比对,记录彩票号码中出现的中奖号码数字的次数,比如例子12 8 9 23 1 16 7与中奖号码23 31 1 14 19 17 18比对,出现了23和1这两个数字,根据题目要求该号码获得了五等奖,即在输出数组中的a[5]处加1,表示中了一次五等奖;同理,11 7 10 21 2 9 31中只有中奖号码数字31出现了1次,根据题目该号码获得了六等奖,即在对应输出数组中的a[6]处加1,表示中了一次六等奖。
题目分析到这里,我说一说我在这道题上踩的坑,首先我看到题目最后测试数据规模为1<=n<1000,就鬼使神差地把数组范围设成了1000多,实际上这道题完全不需要那么大的数组,这个n代表的是我们循环的次数,与数组本身无关,在进行数据比较操作的时候实际上只是那7个数字进行比较,所以我们只需要设置一个长度为7的存储中奖号码的a数组,和一个长度一样为7的最后输出的中奖数组flag。这个程序的核心实际上是一个while循环嵌套一个两层的for循环(实现比较),这道题就AC了。
上代码:

#include<cstdio>
#include<cstring>
using namespace std;
int a[7];
int flag[7];
int main(){
   
int n;
int m;
while(scanf("%d",&n)!=EOF){
   
        //中奖号码
    int cnt = 0;
    //这里为了保险,我把flag数组初始化为0
    memset(flag,0,
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值