问题 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;
}