📄 梁淘-5.5.txt
字号:
#include <iostream.h>
#include <math.h>
#include <fstream.h>
int merge(int *,int,int **);//计算对矩阵特征值的最大贡献的算法函数
int max(int,int,int);//求三个数中的最大值的函数
void main( )
{
/*从文件中读出数据*/
int nn;
int *pp;
ifstream fopen("input.txt");
if (! fopen)
{
cout<<"无法打开INPUT.TXT文件"<<'\n';
return;
}
fopen>>nn;
if ((pp=new int[nn+1])==NULL){
cout<<"无法提供更多的内存空间"<<'\n';
return;
}
for (int i1=0;i1<=nn;i1++) fopen>>pp[i1];
fopen.close();
int **mm;
mm=new int* [nn+1];
for (int i2=0;i2<=nn;i2++)
{
if (!(mm[i2] = new int[nn+1]))
{
cout<<"无法提供更多的内存空间"<<endl;
return ;
}
}
int mmm=merge(pp,nn,mm);
/*数据写入文件*/
ofstream outf("output.txt");
if (! outf)
{
cout<<"数据无法写入output.TXT文件"<<'\n';
return;
}
outf<<mmm<<'\n';
outf.close();
delete[] pp;
delete[] *mm;
return ;
}
//计算对矩阵特征值的最大贡献
int merge(int *p,int n,int **m)
{
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]+3*max(p[i-1],p[i],p[j])-p[i-1]-p[i]-p[j];
for (int k=i+1;k<j;k++){
int t=m[i][k]+m[k+1][j]+3*max(p[i-1],p[k],p[j])-p[i-1]-p[k]-p[j];
if (t>m[i][j]) m[i][j]=t;
}
}
return m[1][n];
}
//求三个数中的最大值
int max(int a,int b,int c)
{
int m=a;
if (m<b) m=b;
if (m<c) m=c;
return m;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -