【发布时间】:2015-03-04 20:46:26
【问题描述】:
你好 Stackoverflow!今天我有一个关于我的作业开始的问题。作业的目标是创建一个函数 find_greatest_product(),它接受一个数组 参数并返回四个相邻数字的最大乘积,可以是向上,向下, 左,右,对角线,或在 N × M 网格/矩阵中的盒子形式。
我已经发布的是我的确切代码,它创建一个数组并用 0 到 50 的随机数填充它以进行测试。我不知道的是如何创建一个可以扫描整个阵列以寻找目标的算法。我有一种方法可以在 2x2 的盒子中找到最大的产品,但事实证明直线和对角线很难。非常欢迎任何帮助、输入或建议。这是我预先存在的代码:
int find_greatest_product(int **newArray, int &r, int &c){
//find the greatest product of 4 adjacent numbers, in any direction.
}
int test_array(){
//error handling
}
int print_array(int **newArray, int &r, int &c){
for (int i = 0; i < c; ++i)
{
for (int j = 0; j < r; ++j)
{
cout << newArray[i][j] << ' ';
}
cout << endl;
}
}
int create_array(int r, int c){
srand((unsigned)time(0));
int** newArray = new int*[r];
for (int i = 0; i < r; ++i)
{
newArray[i] = new int[c];
for (int j = 0; j < c; ++j)
newArray[i][j] = rand() % 50 + 1;
}
print_array(newArray, r, c);
}
int main(int argc, char* argv[]) {
int rows, col;
cout << "enter rows : " << endl;
cin >> rows;
cout << "enter cols : " << endl;
cin >> col;
create_array(rows, col);
}
另外,对于那些感兴趣的人,这里是原始的问题陈述:
【问题讨论】:
-
有趣的问题。解释一下如何在您的代码中将您在
create_array()中创建的数组传递回 main ? -
@George Gall 有很多用户使用 nick Stackoverflow。你在问候什么用户?:)
-
@Christophe 是否可以在主体中取消引用它?
-
其中哪一部分被证明是困难的?您是如何尝试解决问题的?
-
好的!让我们一起做一些进展:开始更改代码,以便将数组指针返回给 main()。要验证它是否有效,请从 main 调用 print_array()。最后以某种方式组织所有这些指针将在您离开 main() 时被释放。一旦这些基本的东西完成了,我会回到你身边