상 삼각 행렬 은 1 차원 배열 로 저장 된다.

2352 단어 데이터 구조
압축 행렬  ,행렬 을 1 차원 행렬 로 저장 하 는 동시에 압축 을 풀 수 있다. 
사실 제목 이 잘 기억 이 안 나 는데...이 문 제 를 처음 풀 었 을 때 저 는 n * n 매트릭스 로 데 이 터 를 저장 한 다음 에 압축 방법 과 압축 해제 방법 을 정 의 했 습 니 다. 숙제 를 마치 고 선생님 께 서 이 문제 의 원래 뜻 은 그렇지 않다 고 말씀 하 셨 습 니 다.당신 은 1 차원 배열 로 데 이 터 를 저장 해 야 공간 을 절약 하 는 목적 을 달성 할 수 있 습 니 다. 그리고 출력 할 때 표시 식 n * n 의 행렬...그리고 다시 고 쳤 습 니 다. 다음은 제 답 입 니 다. 오류 가 있 으 면 위 챗 macfor you 1 을 추가 하 겠 습 니 다.
Matrix.java  
public class  Matrix {
	int r;
	int c;
	int[] values;//            

	public Matrix() {
		r = 1;
		c = 1;
		values = new int[1];
		values[0] = 1;//        1*1  ,    0
	}

	public Matrix(int r, int c, int[] values) {
		super();
		this.r = r;
		this.c = c;
		this.values = values;
	}
        
        //              
 public static void recover(Matrix b) throws Exception{
int length = b.values.length;
int n = (int) Math.sqrt(2 * length);
int[][] a = new int[n][n];
for (int i = 0, k = 0; i 

 
 public Matrix add( Matrix y) {

int n = y.values.length;

int[] z = new int[n];

if (this.values.length != y.values.length)

{System.out.println("             ");

} else

{for (int i = 0; i < n; i++)

{z[i] = this.values[i] + y.values[i];}}

Matrix m=new Matrix(1, this.values.length, z); return m;}

//          

public static void show1(Matrix m)

{

for(int i = 0; i < m.values.length; i++)

{

System.out.print("\t"+m.values[i]);}System.out.println();}
//           n*n      ,

 public static void show2(int[][] array)

{for (int i = 0; i < array.length;i++)

{for (int j = 0; j < array[i].length; j++)

{

System.out.print("\t"+array[i][j]);}

System.out.println();}

}

}

 
然后定义一个MatrixTest类来测试 
   
  
import java.util.zip.ZipEntry;

import org.omg.CosNaming.NamingContextExtPackage.AddressHelper;

public class Matrixtest {  
       public static void main(String[] args) throws Exception {
		Matrix m=new Matrix();
		m.show1(m);
		int[] values1={1,2,3,4,5,6};
		Matrix m1=new Matrix(1, values1.length, values1);
//		m1.show1(m1);
		int[] values2={2,3,4,5,6,7};
		Matrix m2=new Matrix(1, values2.length, values2);
		m2.show1(m2);
		m2.recover(m2);
		Matrix m3=m1.add(m2);
		m3.show1(m3);
		
	}
       
  
      
}

좋은 웹페이지 즐겨찾기