洛谷 P3156 【深基15.例1】询问学号

【题目链接】

洛谷 P3156 【深基15.例1】询问学号

【题目考点】

1. 数组
2. 数组填充

将数值d填充到数组a,数组a中元素数量为an,an初值为0。

  • 填充至下标0到an-1:a[an++] = d
  • 填充至下标1到an:a[++an] = d
2. vector

【解题思路】

解法1:使用从1开始的数组

设数组a,a[i]表示第i个学生的学号。而后进行m次询问,输入x,输出a[x]
【注意】学生数量达到 2 ∗ 1 0 6 2*10^6 2106,必须将数组设为全局变量。

解法2:填充数组

每输入一个学生的学号,将其填充至数组a。填充为下标从1开始的数组。而后输入x,输出a[x]

解法3:使用vector

每输入一个学生的学号,将其添加进vector。vector下标从0开始,第x个学生的学号在vector中下标为x-1。

【题解代码】

解法1:使用从1开始的数组
#include <bits/stdc++.h>
using namespace std;
int a[2000005];//a[i]:第i个进入教室的学生的学号 
int main()
{
	int n, m, x;
	cin >> n >> m;
	for(int i = 1; i <= n; ++i)
		cin >> a[i];
	while(m--)
	{
		cin >> x;//询问第x个进入教室的同学的学号 
		cout << a[x] << endl;
	}
	return 0;
}
解法2:数组填充
#include<bits/stdc++.h>
using namespace std;
int a[2000005], ai;
int main()
{
	int n, m, v, x;
	cin >> n >> m;
	for(int i = 1; i <= n; ++i)
	{
		cin >> v;
		a[++ai] = v;//填充数值v到数组a 
	}
	for(int i = 1; i <= m; ++i)
	{
		cin >> x; 
		cout << a[x] << endl;
	}
	return 0;
}
解法3:使用vector
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n, m, a, x;
	vector<int> vec;
	cin >> n >> m;
	for(int i = 1; i <= n; ++i)
	{
		cin >> a;
		vec.push_back(a);
	}
	for(int i = 1; i <= m; ++i)
	{
		cin >> x;
		cout << vec[x-1] << endl; 
	}
	return 0;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值