求助高手:C++ 使用函数中的二维数组

proof1 2016-09-06 05:13:12
例程如下,一字不差:
void MatrixChain(int *p, int n, int **m, int **s) {
for (int i=1; i<=n; i++) m[i][i]=0;
for (int r=2; r<=n; r++)
for (int i=1; i<=n-r+1; i++){
int j=i+r-1;
m[i][j]=m[i+1][j]+p[i-1]*p[i]*p[j];
s[i][j]=i;
for (int k=i+1; k<j; k++){
int t=m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j];
if (t<m[i][j]) { m[i][j]=t; s[i][j]=k; }
}
}
}



不必考虑例程功能。这个函数本身语法是否有错误?
比如,形参是**m形式,体内可否m[i][j]形式?

自己编写的调用如下:
意图:
n=6
m、s 是二维数组(方阵),不使用[0][0],从[1][1]~[n][n]
p 是一维数组 [0]~[n]
void MatrixChain(int *, int, int **, int **);

int main() {
int n=6;
int **m, **s;
m=new int *[n+1];
s=new int *[n+1];
int p[]={30,35,15,5,10,20,25};

MatrixChain(p,n,m,s);

return 0;
}



调用没有成功,请看看有哪些语法错误?
...全文
239 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
proof1 2016-09-07
  • 打赏
  • 举报
回复
成功了。多谢。
skt555 2016-09-06
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/392012201 参考前几天我问的这个问题应该就明白了
paschen 版主 2016-09-06
  • 打赏
  • 举报
回复
二维数组其实是一维数组的数组,你这样写只申请了最外面一层数组,还要加个循环申请下一层数组空间 形参是**m形式,体内可否m[i][j]形式 —— 可以!前提你这个指针已经指向有效的内存
小灸舞 2016-09-06
  • 打赏
  • 举报
回复
形参是**m形式,体内可以用m[i][j]这样的形式


#include<iostream>
using namespace std;
void MatrixChain(int *p, int n, int **m, int **s) {
	for (int i = 1; i <= n; i++) m[i][i] = 0;
	for (int r = 2; r <= n; r++)
	for (int i = 1; i <= n - r + 1; i++){
		int j = i + r - 1;
		m[i][j] = m[i + 1][j] + p[i - 1] * p[i] * p[j];
		s[i][j] = i;
		for (int k = i + 1; k<j; k++){
			int t = m[i][k] + m[k + 1][j] + p[i - 1] * p[k] * p[j];
			if (t<m[i][j]) { m[i][j] = t; s[i][j] = k; }
		}
	}
}

int main() {
	int n = 6;
	int **m, **s;
	m = new int *[n + 1];
	s = new int *[n + 1];
	for (int i = 0; i <n + 1; i++)
	{
		m[i] = new int[n + 1];
		s[i] = new int[n + 1];
	}
	int p[] = { 30, 35, 15, 5, 10, 20, 25 };

	MatrixChain(p, n, m, s);

	return 0;
}
lilianjie001 2016-09-06
  • 打赏
  • 举报
回复
没有分配内存导致的 二级指针初始化需要2次 一次对二级指针对象 一次对它指向的 内容(对象) m=new int *[n+1]; s=new int *[n+1]; for(int i=0;i <n+1;i++) { m[i] = new int[n+1]; s[i] = new int[n+1]; } 试一下

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧