关于数据结构的小问题,望高手写明
关于n阶对三角矩阵,关键是要知道有多少不为零的元素,这样就能计算出一维数组的大小,按照三条对角线上的元素顺序逐行地存储到数组中。
下面是一些性质:
3条对角线元素个数: n*3-2;(n表示阶)
数组下标index与对三角矩阵行i、列j关系:
index = 2*i+j;
i=(index+1)/3;
j=index-2((index+1)/3)=index-2i;
下面是个示例:
public class TriangularMatrixDemo {
public static void main(String[] args) {
int[][] triangularMatrixArra...全部
关于n阶对三角矩阵,关键是要知道有多少不为零的元素,这样就能计算出一维数组的大小,按照三条对角线上的元素顺序逐行地存储到数组中。
下面是一些性质:
3条对角线元素个数: n*3-2;(n表示阶)
数组下标index与对三角矩阵行i、列j关系:
index = 2*i+j;
i=(index+1)/3;
j=index-2((index+1)/3)=index-2i;
下面是个示例:
public class TriangularMatrixDemo {
public static void main(String[] args) {
int[][] triangularMatrixArray = {
{1,2,0,0},
{2,3,4,0},
{0,3,1,6},
{0,0,5,2}
};
generateDimensionalArray(triangularMatrixArray);
display(triangularMatrixArray);
display(generateDimensionalArray(triangularMatrixArray));
}
private static int[] generateDimensionalArray(int[][] triangularMatrixArray) {
if(triangularMatrixArray == null)return null;
int[] array = new int[triangularMatrixArray。
length*3-2];
for(int i = 0; i < triangularMatrixArray。length; i++){
for(int j = 0; j < triangularMatrixArray。
length; j++){
if(Math。abs(i-j) < 2){
int k = 2*i+j;
array[k] = triangularMatrixArray[i][j];
}
}
}
return array;
}
private static void display(int[] array){
if(array == null)return;
for(int i = 0; i< array。
length; i++){
int("元素:" + array[i] + " 在一维数组中的位置是 "+(i+1));
int(";在"+((array。length+2)/3)+"维对三角矩阵中的位置是 第"+(((i+1)/3)+1)+"行,第"+((i-2*((i+1)/3))+1)+"列");
intln();
}
}
private static void display(int[][] triangularMatrixArray){
if(triangularMatrixArray == null)return;
for(int i = 0; i < triangularMatrixArray。
length; i++){
int[] array = triangularMatrixArray[i];
for(int j = 0; j < array。length; j++){
int(array[j]);
if(j < array。
length-1){
int(",");
}
}
intln();
}
}
}
。收起