就是比如说我创建了一个一维的动态数组t,然后这个数组里面我有5个元素都是0,然后我把这个t赋值给了另一个二维的动态数组mult,这样的话mult这个数组不是就一行吗,那我如果程序里面涉及访问了mult的第1行会咋样,会返回0嘛还是报错,或者是空。就比如我下面这个程序,当我输入3的时候,f函数里面第一个for循环第2次执行的时候就会涉及到访问mult数组的第i行,此时是1,而我的mult数组是只给了第一行的值的,所以请问这时候程序会自动把这个动态数组给补上嘛也就是,赋值0?
#include <bits/stdc++.h>
using namespace std;
int f(int str) {
int vect = str;
if (str * str * str < vect * vect++)return 0;
vector<int> t(vect, 0);
vector<vector<int>> mult = {t};
int prod = vect;
while (mult.size() <= prod) {
vector<int> t = {};
for (int i = 0; i < mult.size(); i++) {
t.push_back(mult[i][mult[i].size() - 1]);
mult[i].pop_back();
}
prod--;
for (int j = 0; j < t.size(); j++){
if (mult[mult.size() - 1].size() == prod){
mult.push_back({t[j]});
}else{
mult[mult.size() - 1].push_back(t[j]);
}
}
}
return (prod);
}
int main() {
int n;
while (1) {
cin >> n;
cout << f(n) << endl;
}
}