数组实战1
这是一个系列的实战,将会讲述从易到难的部分数组题目,分别会从思路,如何编写,程序等角度进行深入
# 题目1
题目描述
输入N(N<=100000 )个数,计算数字M的出现次数,并输出M的第一次出现的位置。
输入
总共N+2行数据。
第一行为数字N,接下来N行,每行一个整数。
最后一行为数字M。
在上述的N的数据中查找M第一次出现的位置及总共出现的次数。
输出`
输出M首次出现的位置和次数。
未找到的位置输出0,次数输出0。
思路
首先这是一道有关数组的题目,并且讲述了数组的大小(n<=100000),所以,我们可以直接定义数组a的大小(数组经常定义名字为a,而且数值往往比题目说的要大一些),题目告诉我们要输入一个数字并且要记住它出现的次数,这个时候我们就可以先创建一个变量来计数它出现了多少次,以及输入了别的数字就可以输入进数组里面并且进行统计,如果有的话那么我的那个统计次数的变量就可以加上一。题目还说了要在第一次出现的位置进行输出,那么我可以对第一次的数的位置在创建一个变量来放置,并且对之后的位置一概不管就好了。。。。哦,对了,如果没有的话就要输出0,审题还是要仔细的。
程序
#include<bits/stdc++.h>
using namespace std;
int a[100010],m,n,wz,ci;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
cin>>m;
for(int i=1;i<=n;i++)
if(a[i]==m)
{
ci++;
if(wz==0)
wz=i;
}
cout<<wz<<" "<<ci;
return 0;
}
变量wz代表了位置,数组a进行了循环输入,以及ci就代表统计的次数