【发布时间】:2019-03-02 16:59:38
【问题描述】:
我想在 Hackerrank 上解决一个名为“可变大小数组”的挑战,我想使用向量来解决这个问题。我写的代码不能正常工作,我尝试调试它,但我一无所获。我将不胜感激 这是挑战:
考虑一个 n 元素数组 a,其中数组中的每个索引 i 都包含对整数数组的引用 Ki(其中 Ki 的值因数组而异)。有关图表,请参阅下面的说明部分。
给定 a,你必须回答 q 个问题。每个查询都采用 i j 格式,其中 i 表示数组中的索引,j 表示数组中位于 a[i] 的索引。对于每个查询,查找并打印数组中元素 j 的值,位于 a[i]a 新行的位置。
输入格式
第一行包含两个用空格分隔的整数,分别表示 n(可变长度数组的数量)和 q(查询的数量)的值。 后续行的每一行都包含一个空格分隔的序列,格式为 k a[i]0 a[i]1 … a[i]k-1,描述位于 a[i] 的 k 元素数组。 q 后续行中的每一行都包含两个以空格分隔的整数,分别描述查询的 i(数组 a 中的索引)和 j(a[i] 引用的数组中的索引)的值。
示例输入
2 2
3 1 5 4
5 1 2 8 9 3
0 1
1 3样本输出
5
9
这是我的代码(我将把它留给 couts 进行调试):
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::vector;
using std::endl;
int main() {
int numberOfQueries = 0;
int numberOfArrays = 0;
cout << "Enter Nr.Of Arrays followed by Nr.Of Queries:";
cin >> numberOfArrays >> numberOfQueries;
cout << "Nr.Of Arrays: " << numberOfArrays << endl;
cout << "Nr.Of Queries: " << numberOfQueries << endl;
vector<vector<int>>multiArray;
cout << "MultiArray size: " << multiArray.size();
while (numberOfArrays != 0) {
int vsize = 0;
cout << "\nenter array starting by its size: ";
cin >> vsize;
cout << " Size entered is: " << vsize << endl;
vector<int> vec1(vsize);
cout << "Array Size is: " << vec1.size() << endl;
//int element = 0;
while (cin >> vsize) {
cout << "Element is: " << vsize << "\n";
vec1.push_back(vsize);
};
multiArray.push_back(vec1);
numberOfArrays--;
cout << "MultiArray size: " << multiArray.size();
cout << "Nr.Of Arrays: " << numberOfArrays << endl;
};
while (numberOfQueries > 0) {
int i = 0, j = 0;
cout << "\nQuery indexes:";
cin >> i >> j;
cout << multiArray[i][j];
numberOfQueries--;
}
}
【问题讨论】:
-
你认为
while (cin >> vsize)是做什么的?提示:它不会在按下回车键之前进行扫描