版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a845717607/article/details/89352222
问题 B: 找x
时间限制: 1 Sec 内存限制: 32 MB
题目描述
输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。
输入
测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。
输出
对于每组输入,请输出结果。
样例输入
4 1 2 3 4 3
样例输出
2
经验总结
简单的hash,当然也可以用数组记录,然后遍历进行寻找,这一题不会超时,不过hash会更快一些~如果看不懂unordered_map,就用我提供的另一种简单一些的方法~
AC代码
hash
#include<cstdio>
#include<unordered_map>
using namespace std;
int main()
{
int n;
unordered_map<int,int> mp;
while(~scanf("%d",&n))
{
int m;
mp.clear();
for(int i=0;i<n;i++)
{
scanf("%d",&m);
mp[m]=i;
}
scanf("%d",&m);
if(mp.count(m)!=0)
printf("%d\n",mp[m]);
else
printf("-1\n");
}
return 0;
}
遍历法
#include<cstdio>
int main()
{
int n;
while(~scanf("%d",&n))
{
int a[210]={0},m,flag=-1;
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
for(int i=0;i<n;i++)
if(a[i]==m)
{
flag=i;
break;
}
printf("%d\n",flag);
}
return 0;
}