输入格式
第一行包含两个以空格分隔的整数,表示相应的值(可变长度数组的数量)和(查询的数量)。 后续行的每一行包含格式为k a [i] 0 a [i] 1 ... a [i] k-1的空格分隔序列,其描述位于的元素阵列。 每个后续行包含两个以空格分隔的整数,用于描述查询的相应值(数组中的索引)和(引用的数组中的索引)。
输出格式 - 对于每对和值(即,对于每个查询),打印单个整数,表示位于所引用的数组的索引处的元素。总共应该有输出线。
示例输入
2 2 3 1 5 4 5 1 2 8 9 3 0 1 1 3 样本输出
5 9
有人通过 -
解决了这个问题int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int n,q; //n number of variable lenght arrays
// q no of queries asked
cin >>n >>q;
int ** Vectors = new int *[n];//no of length of var. arrays
int j;
for (int i=0;i<n;i++)
{
cin>>j;
Vectors[i] = new int [j];
for (int y=0;y<j;y++)
cin>>Vectors[i][y];
}
int q1,q2;
for (int i=0;i<q;i++)
{
cin >>q1 >> q2;
cout<<Vectors[q1][q2]<<endl;
}
return 0;
}
有人能解释一下这段代码吗?或者,如果有人有更好的方法来解决这个问题。然后请详细解释。
答案 0 :(得分:0)
这应该很难理解,代码基本上是在运行时初始化动态2D数组,然后将值插入到2D数组中,然后通过给出索引来访问它:
int ** Vectors = new int *[n];//no of length of var. arrays
int j;
for (int i=0;i<n;i++)
{
cin>>j;
Vectors[i] = new int [j]; // initialzing inner array.. consider it as 2D array with n rows and j columns
for (int y=0;y<j;y++)
cin>>Vectors[i][y]; // insert element at specified index
}
cout<<Vectors[q1][q2]<<endl; // access element from 2D array
答案 1 :(得分:0)
您可能想要使用的是Matrix类。 使用
vector<vector<int>>
应该这样做。
或者,应将snipet代码重构为带有构造函数和析构函数的Matrix类。 您提供的示例会显示内存泄漏,因为未释放已分配的内存。