矩阵最大和的问题求指点

real272 2012-07-13 04:28:22
#include<iostream>
using namespace std;

int Matrix[100][100];
int N;
int temp[100];
int sum(int * a)
{
int max,b;
max=-(1<<30);b=a[0];
for(int i=1;i<N;i++)
{
if(b>0)
b=b+a[i];
else
b=a[i];
if(b>max)
max=b;
}
return max;
}

int main()
{
int MAX,num;
cin>>N;

//int * temp=new int [N];
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
cin>>Matrix[i][j];

MAX=-(1<<30);
for(int i=0;i<N;i++)
{
memset(temp,0,sizeof(temp));
for(int j=i;j<N;j++)
{
for(int k=0;k<N;k++)
temp[k]+=Matrix[j][k];
num=sum(temp);
if(num>MAX)
MAX=num;
}
}
cout<<MAX<<endl;
return 0;
}

当我用 new 来定义 temp 的时候,输出是错误的,
当用全局变量来定义 temp 时,输出正确,
求解释为什么
...全文
66 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
mydevin_ndsc 2012-07-13
  • 打赏
  • 举报
回复
局部的temp是一个指针哈,
局部的时候:sizeof(temp)的值是4
全局的时候:sizeof(temp)才是将数组置空了。
如果局部声明:memset(temp,0,sizeof(temp));
改为
memset(temp,0,sizeof(int) * N);
就好了。

你的代码命名风格要统一下,这样看起来太痛苦了。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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