这道题的题意大概是把a[x]中比x小的数储存为b[x]的下标,最终统计b[x]出现的次数。
此题目需要注意的一点就是需要判断b[x]是否等于x,如果等于就需要删除而多加一个次数。
这也是一开始一直没有ac的原因。
题解如下。(来自闻道-问道)
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[102];
int b[102];
int main()
{
int n,x;
cin>>n>>x;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
sort(a+1,a+n+1);
int m=0;
for(int i=1;i<=n;i++)
{
if(a[i]<=x)b[a[i]]=1;
else break;
}
//cout<<b[x]<<endl;
for(int i=0;i<x;i++)
{
if(!b[i])m++;
}
if(b[x]==1)m++;
printf("%d\n",m);
return 0;
}