求一题答案
pascal吧
全部回复
仅看楼主
level 5
问题描述
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
输入格式
第一行包含一个整数n,1<=n<=1000。
   第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
   第三行包含一个整数a,为待查找的数。
输出格式
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
样例输入
6
1 9 4 8 3 9
9
样例输出
2
2014年02月10日 12点02分 1
level 13
var n:longint;
i:longint;
x:longint;
begin
readln(n);
for i:=1 to n do read(a[i]);
readln(x);
for i:=1 to n do
begin
if a[i]=x
then
begin
writeln(i);
break;
end;
end;
end.
//纯粹手写,有小问题,自己改。大致如此。
2014年02月11日 01点02分 2
level 13
var n:longint;
i:longint;
x:longint;
begin
readln(n);
for i:=1 to n do read(a[i]);
readln(x);
for i:=1 to n do
begin
if a[i]=x
then
begin
writeln(i);
break;
end;
end;
end.
2014年02月11日 01点02分 3
level 13
修正一下:
var n:longint;
i:longint;
x:longint;
flag:boolean;
begin
readln(n);
flag:=false;
for i:=1 to n do read(a[i]);
readln(x);
for i:=1 to n do
begin
if a[i]=x
then
begin
writeln(i);
flag:=true;
break;
end;
end;
if flag=false
then writeln(-1)
end.
2014年02月11日 01点02分 4
编译出错
2014年02月11日 13点02分
level 6
暂时想到的
- 标记记录位置 时间复杂度 O(n) 空间复杂度 O(n)
- 排序+二分 时间复杂度 O(nlogn) 空间复杂度 O(n)
- 查找树 [其实是[笑眼]]
- 枚举 时间复杂度 O(n) 空间复杂度 O(n) [略慢于标记]
- 似Qsort方法查找单一元素 时间复杂度 O(n+logn) 空间复杂度 O(n) [略慢于标记]
2014年02月11日 13点02分 5
不用想那么复杂,单循环走一遍就行了。
2014年02月12日 01点02分
回复 hakenst 排完序还得再找一遍,没必要
2014年02月13日 03点02分
level 13
抱歉:
var n:longint;
i:longint;
a:array[1..2000]of longint;
x:longint;
flag:boolean;
begin
readln(n);
flag:=false;
for i:=1 to n do read(a[i]);
readln(x);
for i:=1 to n do
begin
if a[i]=x
then
begin
writeln(i);
flag:=true;
break;
end;
end;
if flag=false
then writeln(-1)
end.
2014年02月12日 01点02分 6
1