多维数组可以解决很多复杂的问题,比如本例的五子棋就是其中一种,虽然九个正面和背面游戏有些简单,但还是自己动手设计,熟悉下多维数组的用法。另外,矩阵相乘作为这篇博文的开篇,一是为了复习多维数组,二是为了给五子棋练习基本功,本博文重点在五子棋。
示例一:矩阵相乘。(复习数组的使用)显示相乘的a和b矩阵,运算后显示c矩阵的结果。
运行效果如图:
如下是实现源代码:
package Blog;
import java.util.Scanner;
public class blogTryProject{
public static void main(String[]args){
double[][] a = new double[3][3];
double[][] b = new double[3][3];
double[][] c = new double[3][3];
a = create(a);
b = create(b);
System.out.println("a矩阵为:");
print(a);
System.out.println("b矩阵为:");
print(b);
c = multiplyMatrix(a,b);
System.out.println("a * b 的结果为:");
print(c);
}
public static void print(double[][] c){
for(int i = 0;i < c.length;i++){
for(int j = 0;j < c[0].length;j++)
System.out.printf("%4.1f ",c[i][j]);
System.out.println();
}
}
public static double[][] create(double[][] num){
for(int i = 0;i < num.length;i++)
for(int j = 0;j < num[0].length;j++)
num[i][j] = (Math.random()*10);
return num;
}
public static double[][] multiplyMatrix(double[][] a,double[][] b){
double[][] c = new double[a.length][a[0].length];
for(int i = 0;i < c.length;i++)
for(int j = 0;j < c[0].length;j++)
for(int k = 0;k < c.length;k++)
c[i][j] += a[i][k] * b[k][j];
return c;
}
}
示例二:九个正面和背面游戏。一个3X3的矩阵中放了9个硬币,这些硬币有些面向上,有些面向下。可以使用3X3矩阵中的0(正面)或1(反面)便是硬币的状态。下面是一些列子:
每个状态都可以使用一个二进制数表示。例如前面的矩阵对应到数字为: