1个回答
2013-03-30
展开全部
一个循环就可以了:假定是n*n矩阵,矩阵由数组array[n][n]表示
for(int i=0;i<n;i++)
{
if(i!=(n-1)/2)
sum+=(array[i][i]+array[i][n-i-1]);
else
sum+=array[i][i];
}
没有调试,不过思想是从行出发,共n行,对角线的元素在每行上的分布是规律的,每行上对角线元素的序号相加是n+1,由于当n是奇数的时候,中间行的对角线元素重叠,但是只应该加一次,要排除(else中情况)。
for(int i=0;i<n;i++)
{
if(i!=(n-1)/2)
sum+=(array[i][i]+array[i][n-i-1]);
else
sum+=array[i][i];
}
没有调试,不过思想是从行出发,共n行,对角线的元素在每行上的分布是规律的,每行上对角线元素的序号相加是n+1,由于当n是奇数的时候,中间行的对角线元素重叠,但是只应该加一次,要排除(else中情况)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询