二次元配列と疎な配列の相互変換

構造体パッケージ; 

publicクラスSparseArr {
パブリック静的無効メイン(文字列[] args){
[11] [11]チェス[] [] =新しい新しいINTをint型;
// 0代表ブランク、黒点の代表を、青サブ表す
チェス[ 1] [2] = 1;
チェス[2] [3] = 2;
int型SUM = 0;
//有効数取得
のための(INT []行:チェス){
(intデータ:行)のために{
システム。フォームをout.printf( "%D \ T"、データ);
IF {(データ!= 0)
SUM ++;
}
}
のSystem.out.println();
}
//疎なアレイの作成
INTを[] [] sparseArr =新しい INT [ 1 + SUM] [3];
//疎なアレイの割り当てに
[0] = [0] sparseArr 11; // ボードの行数
sparseArr [0] [1] = 11; // ボードの列数
sparseArr [0] [2] =和、 ボード上のピースの数//
列の二次元アレイの//長
INT = COUNT 1;
{(; Iはchess.lengthを<I ++はI = 0の整数)のための
(INT J = 0; J <チェス[0] .LENGTH; J ++)のために{
(!チェス[I] [J] = 0){IF
sparseArr [COUNT] [0] = I;
sparseArr [COUNT] = J [1];
sparseArr [COUNT] [2] =チェス[I]、[J]。
++ COUNT;
}
}
}
//出力スパースアレイ
のために(INT i = 0; iは <sparseArr.length; iは++){
System.out.printf( "%D \ D%T \ T%D \ T \ N-"、sparseArr [I] [0]、sparseArr [I]、sparseArr [I] [2] [1]);
}
/ /次元配列復元
INT [] [] = chess1Arr新しい新しいINT [sparseArr [0] [0] [sparseArr [0] [1]];
二次元アレイに//割り当て
のための(INT I = 1; I <sparseArr .LENGTH; Iは++){
ため(INT J = 0; J <sparseArr [0] .LENGTH; J ++){
chess1Arr [sparseArr [I] [0] [sparseArr [I] [1]] = sparseArr [I] [ 2];
}
}
//出力の二次元アレイ
{(; Iはchess1Arr.lengthを<I ++はINT I = 0)のための
ための(INT J = 0; J <chess1Arr [0] .LENGTH; J ++){
のSystem.out。 printf( "%D \ T"、chess1Arr [I] [J]);
}
System.out.println();
}
}
}

おすすめ

転載: www.cnblogs.com/kukai/p/10992004.html