例如,我想计算三角形中所有垂直元素的总和,如果三角形是

例如:三角形大小为 5

1
2 2
5 2 2
2 0 5 8
8 7 9 4 5

那么总和应该是
Sum1 = 1+2+5+2+8 = 18 (Sum of vertical elements from the first column)
Sum2 = 2+2+0+7 = 11
Sum3 = 2+5+9 = 16
Sum4 = 8+4=  12
Sum5 = 5 = 5

注意:三角形的大小会有所不同,元素也是随机的。

我写的程序,但它只计算第一行我如何计算和存储第二、第三和最后一行?
public class fsdhs
{
    public static void main(String args[])
    {
        int arr[]={1,2,2,5,2,2,2,0,5,8,8,7,9,4,5};
        int x,y,count=0,size=5,sum=0;
        boolean flag=false;
        for(x=0;x<size;x++)
        {
            for(y=0;y<=x;y++)
               {
                if(flag==false)
                {
                    sum=sum+arr[count];
                    flag=true;
                }
                 System.out.print(arr[count]+" ");
                 count++;
               }
               System.out.print("\n");
               flag=false;
        }
        System.out.print("\nSum1="+sum);
    }
}

最佳答案

更直观的方法可能是使用多维锯齿状数组来存储三角形数据。通过这种方式,您可以直接对坐标进行推理,而无需计算基于行的偏移量:

int arr[][]={{1},{2,2},{5,2,2},{2,0,5,8},{8,7,9,4,5}};

int size=5;

for(int x=0; x < size; x++)
{
    int sum = 0;
    for(int y=x; y < size; y++)
    {
        sum += arr[y][x];
    }
    System.out.println("Column " + x + " Sum=" + sum + "\n");
}

您只需要警惕锯齿状数组的行大小不均匀

IdeOne Demo

关于java : Sum of Vertical elements in a triangle,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33706608/

10-14 11:29