1934 Problem B 找x

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;  
}  

猜你喜欢

转载自blog.csdn.net/a845717607/article/details/89352222