本题要求将矩阵的四条边的中点连接起来,构成一个菱形,求菱形矩阵的所有数字的加和。
在计算菱形数字加和时,观察每行数字的规律科等结论:每行的数字和为最中间数字的X倍,其中从第一行到n/2+1行X为1,3,5,……(2*i-1)这样的递增数列,从第n/2+2行到第N行,X为(2(n-i+1)-1)……5,3,1.
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int n,sum=0;
scanf("%d",&n);
int a[n+1][n+1];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
a[i][j]=n*(i-1)+j;
}
for(int i=1;i<=n;i++)
{
if(i<=n/2+1){///printf("%d %d\n",i,2*i-1);
sum+=(2*i-1)*a[i][n/2+1];
}
else{///printf("%d %d\n",i,2*(n-i+1)-1);
sum+=(2*(n-i+1)-1)*a[i][n/2+1];
}
}
printf("%d\n",sum);
return 0;
}