package 数组和矩阵;
public class DuiChenJuZhenYaSuo {
int[] arr;
int order; //矩阵的阶数
int n; //压缩后一位数组的个数
public DuiChenJuZhenYaSuo(int order) {
this.n= order * (order + 1) / 2;
this.arr = new int[this.n];
this.order = order;
}
public void init(int[][] a) {
int k = 0;
for (int i = 0; i < order; i++) {
for (int j = 0; j <= i; j++) {
arr[k++] = a[i][j];
}
}
}
public void init(int[] a) {
for (int i = 0; i < n; i++) {
arr[i] = a[i];
}
}
public void print() {
int k;
for (int i = 1; i <= order; i++) {
for (int j = 1; j <= order; j++) {
k= (i >= j) ? (i * (i - 1) / 2 + j - 1) : (j * (j - 1) / 2 + i - 1);
System.out.print(arr[k] + " ");
}
System.out.println();
}
}
public DuiChenJuZhenYaSuo merge(DuiChenJuZhenYaSuo a) {
DuiChenJuZhenYaSuo test = new DuiChenJuZhenYaSuo(this.order);
int k;
for (int i = 1; i <= order; i++) {
for (int j = 1; j <= order; j++) {
k = (i >= j) ? (i * (i - 1) / 2 + j - 1) : (j * (j - 1) / 2 + i - 1);
test.arr[k] = this.arr[k] + a.arr[k];
}
}
return test;
}
public static void main(String[] args) {
DuiChenJuZhenYaSuo test = new DuiChenJuZhenYaSuo(3);
DuiChenJuZhenYaSuo test2 = new DuiChenJuZhenYaSuo(3);
int[][] a = { { 1, 0, 0 }, { 2, 3, 0 }, { 4, 5, 6 } };
int[] b= {1,2,3,4,5,6};
test.init(b);
test2.init(a);
test = test.merge(test2);
test.print();
}
}