70,019
社区成员




for(int m=1;m<n;m+=2)
{
aa=a[m][k]+a[m+1][k];
bb=a[m][k]+a[m+1][k+1];//a[m+1][k+1]超出范围了吧?
cc=a[m][k+1]+a[m+1][k+1];//a[m+1][k+1]超出范围了吧?
dd=a[m][k+1]+a[m+1][k+2];//a[m+1][k+2]超出范围了吧?
max+=(*max_element(ma,ma+4));
if(max==bb||max==cc) k=k+1;
else if(max==dd) k=k+2;
}
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
//下面4行代码创建动态二维数组 a[n][n],不能直接int a[n][n]
int **pa = NULL;
pa = new int*[n];
for (int i = 0; i < n; i++)
pa[i] = new int[n]();//这里把数组成员初始化为0
int aa = 0, bb = 0, cc = 0, dd = 0, max=0, k = 0, ma[4] = { aa,bb,cc,dd }, data;
if (n > 1 && n <= 100)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= i; j++)//你这里给数组成员赋值并没给每一个赋到,逻辑有问题
{
cin >> data;
if (data > 0 && data <= 99)
pa[i][j] = data;
}
}
if (n >= 3)
{
for (int m = 1; m < n; m += 2)
{
aa = pa[m][k] + pa[m + 1][k];
bb = pa[m][k] + pa[m + 1][k + 1];
cc = pa[m][k + 1] + pa[m + 1][k + 1];
dd = pa[m][k + 1] + pa[m + 1][k + 2];
max += (*max_element(ma, ma + 4));
if (max == bb || max == cc) k = k + 1;
else if (max == dd) k = k + 2;
}
cout << max + pa[0][0];
}
else if (n == 2)
{
if (pa[1][0] > pa[1][1]) max = pa[0][0] + pa[1][0];
else max = pa[0][0] + pa[1][1];
cout << max;
}
}
//最后要自己删除创建的二维数组
for (int i = 0; i < n; i++)
delete[] pa[i];
delete[] pa;
system("pause");
return 0;
}