例如,我想计算三角形中所有垂直元素的总和,如果三角形是
例如:三角形大小为 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/