Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- import java.util.ArrayList;
- import java.util.List;
- class Matrix<T> {
- private ArrayList<ArrayList<T>>matrix;
- private int numRow;
- private int numCol;
- public Matrix(int row,int col) {
- this.numRow = row;
- this.numCol=col;
- this.matrix=new ArrayList<>();
- for (int i = 0; i < row;i++){
- matrix.add(new ArrayList<>());
- for(int j=0;j < col;j++)
- matrix.get(i).add(null);
- }
- }
- public int getNumRows(){
- return numRow;
- }
- public int getNumColumns(){
- return numCol;
- }
- public T getElementAt(int row,int col){
- return matrix.get(row).get(col);
- }
- public void setElementAt(int row,int col,T element){
- matrix.get(row).set(col,element);
- }
- public void fill(T element){
- for(int i=0;i < numRow;i++){
- for(int j=0;j < numCol;j++){
- setElementAt(i,j,element);
- }
- }
- }
- public void insertRow(int row){
- if (0 > row || row > numRow)
- throw new ArrayIndexOutOfBoundsException();
- matrix.add(row,new ArrayList<>());
- for(int i=0;i < numCol;i++)
- matrix.get(row).add(null);
- numRow++;
- }
- public void deleteRow(int row){
- if (0 > row || row > numRow)
- throw new ArrayIndexOutOfBoundsException();
- matrix.remove(row);
- numRow--;
- }
- public void insertColumn(int col){
- if (0 > col || col > numCol)
- throw new ArrayIndexOutOfBoundsException();
- for(int i=0;i < numRow;i++){
- matrix.get(i).add(col,null);
- }
- numCol++;
- }
- public void deleteColumn(int col){
- if (0 > col || col > numCol)
- throw new ArrayIndexOutOfBoundsException();
- for(int i=0;i < numRow;i++){
- matrix.get(i).remove(col);
- }
- numCol--;
- }
- public void resize(int rows,int col){
- if(rows <= numRow)
- for(int i=numRow-1;i >= rows;i--){
- deleteRow(i);
- }
- else
- for(int i=numRow;i < rows;i++){
- insertRow(i);
- }
- if(col <= numCol){
- for(int i=numCol-1;i >=col;i--){
- deleteColumn(i);
- }
- }else
- for(int i=numCol;i < col;i++){
- insertColumn(i);
- }
- }
- }
- public class MatrixTest {
- public static void main(String[] args) {
- Scanner jin = new Scanner(System.in);
- int t = jin.nextInt();
- if ( t == 0 ) {
- int r = jin.nextInt();
- int c = jin.nextInt();
- Matrix<Integer> matrix = new Matrix<Integer>(r,c);
- print(matrix);
- }
- if ( t == 1 ) {
- int r = jin.nextInt();
- int c = jin.nextInt();
- Matrix<Integer> matrix = new Matrix<Integer>(r,c);
- for ( int i = 0 ; i < r ; ++i ) {
- for ( int k = 0 ; k < c ; ++k ) {
- matrix.setElementAt(i, k, jin.nextInt());
- }
- }
- print(matrix);
- }
- if ( t == 2 ) {
- int r = jin.nextInt();
- int c = jin.nextInt();
- Matrix<String> matrix = new Matrix<String>(r,c);
- for ( int i = 0 ; i < r ; ++i ) {
- for ( int k = 0 ; k < c ; ++k ) {
- matrix.setElementAt(i, k, jin.next());
- }
- }
- print(matrix);
- }
- if ( t == 3 ) {
- int r = jin.nextInt();
- int c = jin.nextInt();
- Matrix<String> matrix = new Matrix<String>(r,c);
- for ( int i = 0 ; i < r ; ++i ) {
- for ( int k = 0 ; k < c ; ++k ) {
- matrix.setElementAt(i, k, jin.next());
- }
- }
- print(matrix);
- matrix.deleteRow(jin.nextInt());
- matrix.deleteRow(jin.nextInt());
- print(matrix);
- int ir = jin.nextInt();
- matrix.insertRow(ir);
- for ( int k = 0 ; k < c ; ++k ) {
- matrix.setElementAt(ir, k, jin.next());
- }
- ir = jin.nextInt();
- matrix.insertRow(ir);
- for ( int k = 0 ; k < c ; ++k ) {
- matrix.setElementAt(ir, k, jin.next());
- }
- print(matrix);
- matrix.deleteColumn(jin.nextInt());
- matrix.deleteColumn(jin.nextInt());
- print(matrix);
- int ic = jin.nextInt();
- matrix.insertColumn(ir);
- for ( int i = 0 ; i < r ; ++i ) {
- matrix.setElementAt(i, ic, jin.next());
- }
- ic = jin.nextInt();
- matrix.insertColumn(ic);
- for ( int i = 0 ; i < r ; ++i ) {
- matrix.setElementAt(i, ic, jin.next());
- }
- print(matrix);
- }
- if ( t == 4 ) {
- int r = jin.nextInt();
- int c = jin.nextInt();
- Matrix<Integer> matrix = new Matrix<Integer>(r,c);
- for ( int i = 0 ; i < r ; ++i ) {
- for ( int k = 0 ; k < c ; ++k ) {
- matrix.setElementAt(i, k, jin.nextInt());
- }
- }
- print(matrix);
- int nr = jin.nextInt();
- int nc = jin.nextInt();
- matrix.resize(nr, nc);
- print(matrix);
- matrix.fill(jin.nextInt());
- print(matrix);
- }
- }
- public static void print ( Matrix<?> m ) {
- int r = m.getNumRows();int c = m.getNumColumns();
- System.out.println(" "+r+" x "+c);
- System.out.print(" ");
- for ( int k = 0 ; k < c ; ++k ) {
- System.out.print(k+" ");
- }
- System.out.println();
- System.out.print(" ");
- for ( int k = 0 ; k < c ; ++k ) {
- System.out.print("-----");
- }
- System.out.println();
- for ( int i = 0 ; i < r ; ++i ) {
- System.out.print(i+"|");
- for ( int k = 0 ; k < c ; ++k ) {
- if ( k > 0 ) System.out.print(" ");
- System.out.print(m.getElementAt(i, k));
- }
- System.out.println();
- }
- System.out.println();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement