一维数组原创题目以及思路讲解(含答案(不是作业和题库的))(正在更新)

一维数组原创题目以及思路讲解(含答案(不是作业和题库的))(正在更新)

如有雷同请告知!

查找数字-题目

题目描述

有一行长度为 n(1 \le n \le 10) 的数列 a_i(0 \le a_i \le 100)(1 \le i \le n) ,要求给出 m(1 \le m \le 15) 个数 x_i(0 \le x_i \le n)(1 \le i \le m) ,找到他的所有所在地(下标)(从 1 开始)

输入格式

第一行有一个数 n
第二行有 n 个数 a_i
第三行有一个数 m
第四行有 m 个数 x_i

输出格式

每行输出一组下标,表示答案,同同行内空格间隔。

样例

样例输入 1

5 
1 3 7 0 1 
3 
0 3 1 

样例输出 1

4
2
1 5

提示

请将思路私聊/发在评论区;

不懂的在评论区回复;

答案私聊/发在评论区

算法点:一维数组,循环(嵌套)。

查找数字-思路

输入部分

直接输入。

int n,a[17],m,x[17];
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
cin>>m;
for(int i=1;i<=m;i++)cin>>x[i];
//这里应该都看得懂 

查找部分

利用 m 次查找创建出 m 次循环,再在 m 次循环里遍历 a_j 如果有一个 a_jx_i 符合,那么直接输出 j 这个下标和空格,最后当循环(遍历)结束就直接输出换行。

for(int i=1;i<=m;i++){//m 个要查找的数。 
	for(int j=1;j<=n;j++){// 遍历数列 $a_i$ 。 
		if(a[j]==x[i])cout<<j<<" ";//找到了就输出 
	}
	cout<<endl;//查找完一个数换一行 
}

(非作业/题库的)AC 程序

最后将所有部分合起来就 AC 了。

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,a[17],m,x[17];
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	cin>>m;
	for(int i=1;i<=m;i++)cin>>x[i];
	for(int i=1;i<=m;i++){//m 个要查找的数。 
		for(int j=1;j<=n;j++){// 遍历数列 $a_i$ 。 
			if(a[j]==x[i])cout<<j<<" ";//找到了就输出 
		}
		cout<<endl;//查找完一个数换一行 
	}
	return 0;
}

有错误请及时指点!

4 个赞