1. 程式人生 > 實用技巧 >2020CSP-S模板

2020CSP-S模板

編寫的五子棋程式中,有存檔退出和續上盤的功能。

分析問題:
因為該二維陣列的很多值是預設值0, 因此記錄了很多沒有意義的資料.->稀疏陣列。

Demo:

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

/**
 * @author zhou
 */
public class ArraysDemo {
    public static void main(String[] args) {
        //1.建立一個二維陣列11*11  0代表沒有棋子,1代表黑棋,2代表白棋
        int[][] arrays=new
int[11][11]; arrays[1][2]=1; arrays[2][3]=2; arrays[2][4]=2; arrays[10][4]=2; //輸出原始陣列 System.out.println("輸出原始的陣列"); for (int[] ints : arrays) { for (int anInt : ints) { System.out.print(anInt+"\t"); } System.out.println(); } System.out.println(
"======================="); //轉換成稀疏陣列 //1.獲取有效值的個數 int sum=0; for (int i = 0; i < 11; i++) { for (int j = 0; j < 11; j++) { if(arrays[i][j]!=0){ sum++; } } } System.out.println("有效值的個數為:"+sum);
//2.建立一個稀疏陣列的陣列 int[][] arrays2=new int[sum+1][3]; arrays2[0][0]=11; arrays2[0][1]=11; arrays2[0][2]=sum; //3.遍歷二維陣列,將非零的值,存放稀疏陣列中 int count=0; for (int i = 0; i < arrays.length; i++) { for (int j = 0; j < arrays[i].length; j++) { if(arrays[i][j]!=0){ count++; arrays2[count][0]=i;// arrays2[count][1]=j;// arrays2[count][2]=arrays[i][j];// } } } //4.輸出稀疏陣列 System.out.println("輸出稀疏陣列"); for (int i = 0; i < arrays2.length; i++) { System.out.println(arrays2[i][0]+"\t"+arrays2[i][1]+"\t"+arrays2[i][2]+"\t"); } System.out.println("======================="); //再將稀疏陣列轉換成原始陣列 //1.讀取稀疏陣列(new int[arrays2[0][0]][arrays2[0][1]]=new int[11][11]) int[][] arrays3= new int[arrays2[0][0]][arrays2[0][1]]; //2.給其中的元素還原它的值(int i = 1 第一行為標題11、11、sum) for (int i = 1; i < arrays2.length; i++) { arrays3[arrays2[i][0]][arrays2[i][1]]=arrays2[i][2]; } //3.列印 for (int[] ints : arrays3) { for (int anInt : ints) { System.out.print(anInt+"\t"); } System.out.println(); } } }