⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 郑凌.txt

📁 这是很不错的计算机算法
💻 TXT
字号:
/*于计算最大子矩阵和问题*/
#include <iostream>
#include <fstream>
using namespace std;
    
int **Maxtrix; 
int Sum1(int,int*); //定义单行数组
int Sum2(int,int,int **); //定义矩阵数组
int Sum1(int n,int *a)  //定义单行数组取最大和函数
{   
    int sum=0;
	int b=0,i;
	for (i=1;i<=n;i++)
	{
	  if(b>0) b+=a[i];
	  else b=a[i];
	  if(b>sum) sum=b;
	}
	return sum;
}
int Sum2(int m,int n,int **a) //定义矩阵数组取最大和函数
{
	int sum=0;
	int *b,i,j;
	b=new int[n+1];
  
	for(j=1;j<=n;j++) b[j]=0; //初始化数组
	for(i=1;i<=m;i++)
	{
	  for(j=1;j<=n;j++) 
	  b[j]+=a[i][j];  //向下合并数据
	  int max=Sum1(n,b);
	  if (max>sum) sum=max;
	}
	delete[] b;
	return sum;
}
//主函数
int main()
{  
  int m,n,i,j;
  ifstream in("input.txt"); //打开输入文件input.txt
  if (in.fail())
  {
  	cout<<"the input.txt is not exist!";
	exit(1);
  }
  in>>m>>n;
  if ((m<=0)||(n<=0))
  {
	cerr << "输入错误数据!";
    exit(1);
  }

//顺序读入矩阵的元数
Maxtrix=new int* [m+1];
for (i=0;i<=m;i++)
{
  if (!(Maxtrix[i] = new int[n+1]))
  { 
  //内存分配不成功,退出
	cout<<"Memory Allocation Error!"<<endl;
	exit(1) ;
  }
}
for(i=1;i<=m;i++)
  for(j=1;j<=n;j++)
	{ in>>Maxtrix[i][j]; }
  ofstream out("output.txt"); //创建输出文件output.txt
  out<<Sum2(m,n,Maxtrix);
  return 1;

//删除动态数组
delete[] *Maxtrix;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -