HAUT OJ2021级新生周赛(二)

问题 B: 牛牛的mex函数

时间限制: 1 Sec  内存限制: 128 MB
提交: 0  解决: 23
[提交] [状态] [讨论版] [命题人:eilene]

题目描述

牛牛最近在组合游戏中经常会遇到求mex,于是他查百度得到:在组合游戏中计算状态的SG值时,我们常常会遇到mex函数。mex(S)的值为集合S中没有出现过的最小自然数。例如,mex({1,2}) =0、mex({0,1,2,3}) = 4。
现在给你集合S,求mex(S)的值。

输入

第一行输入一个整数n,表示集合S有n个元素。(1<=n<=100) 
第二行依次输入a1,a2……an,n个整数,代表集合S的元素。(0<=ai<=1000) 

输出

输出集合的mex(S)。

样例输入 Copy

5
0 1 2 4 5

此题我想不明白的一点是,为什么数组多定义了也要判错?不应该是防止数据溢出就行了

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n;
    int i=1,q=0;
    scanf ("%d",&n);
    int a[100];
    int k=0;
    int zr=0;
    int sx=0,sxx=0;
    int pd=0;
    while(i<=n)
    {
        scanf ("%d",&a[q]);
        i++;
        q++;
    }

        while(pd!=1)
        {
            pd=1;
            while(sxx<=q)
            {

                if(a[sxx]==zr)
            {
                pd=0;
            }
            sxx++;
            }
            zr++;
           sxx=0;
        }

            printf ("%d",zr-1);





    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟也有进大厂的梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值