一维数组原创题目以及思路讲解(含答案(不是作业和题库的))(正在更新)
如有雷同请告知!
查找数字-题目
题目描述
有一行长度为 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_j 与 x_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;
}
有错误请及时指点!