题目描述
在一个序列(下标从1开始)中查找一个给定的值,输出这个数字第一次出现的位置。
输入描述
输入3行,
第1行包含一个正整数n,表示序列中元素个数。1<=n<=10000。
第2行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。元素的绝对值不超过10000。
第3行包含一个整数xx,为需要查找的特定值。xx的绝对值不超过10000。
输出描述
输出1行,若序列中存在xx,输出xx第一次出现的下标;否则输出-1。
样例1
输入
5 2 3 6 7 3 3
输出
2
错误示范!!!
//查找特定的值
//Author:fishing_liver diaoyudegan
#include<bits/stdc++.h>
using namespace std;
//注意边界要大一点
int a[10005];
int main(){
int n;
cin>>n;
//这道题主要考察的就是输入部分
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
//用哈希算法来解,当然别的也可以
//注意!!!这里标记过和没标记过别搞混了,本人第一次就错了
if(a[x]!=0)//如果说当前元素被标记过
{
continue;//继续输入
}
else//若当前元素被标记过
{
a[x]=i;//标记该元素第一次被发现的时候
}
}
int x;
cin>>x;
//这里需要注意特判一下序列中是否存在该元素
if(a[x]==0)//不存在?
{
cout<<-1;//其实也可以初始memset所有元素为-1
return 0;
}
else//存在
{
cout<<a[x];
}
return 0;
}
我忘记了一个点,有可能是负数啊qwq,数组下标不可以是负数awa!!!

好吧,既然是思路错误,就只能重写了……
听说点关注长命百岁awa~
好吧
正确示例
#include<bits/stdc++.h>
using namespace std;
int a[10005];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
int x;
cin>>x;
for(int i=1;i<=n;i++)
{
if(a[i]==x)
{
cout<<i;
return 0;
}
}
cout<<-1;
return 0;
}
ok,本期博文正式竣工!
诚邀壶三,(私我)
序列中查找特定值首次出现位置

2487

被折叠的 条评论
为什么被折叠?



