packagehls;classdf{intzhi=0;publicint[][]yzs(inta[][],inti,intj){int[][]s=newint[a.length-1][a[0].length-1];intaa=0,bb=0;if(a.length==a[0].length){for(intm=0;m
package hls;
class df {
int zhi = 0;
public int[][] yzs(int a[][], int i, int j) {
int[][] s = new int[a.length - 1][a[0].length - 1];
int aa = 0, bb = 0;
if (a.length == a[0].length) {
for (int m = 0; m < a.length; m++) {
if (m + 1 == i) {
continue;
}
bb = 0;
for (int n = 0; n < a[0].length; n++) {
if (n + 1 == j) {
continue;
}
s[aa][bb] = a[m][n];
bb++;
}
aa++;
}
return s;
} else {
return s;
}
}
public int hlsz(int a[][]) {
for (int i = 0; i < a[0].length; i++) {
if (a.length > 2) {
if (i % 2 == 0) {
this.zhi += a[0][i] * hlsz(yzs(a, 1, i + 1));
} else {
this.zhi += -1 * a[0][i] * hlsz(yzs(a, 1, i + 1));
}
} else if (a.length == 2) {
this.zhi += a[0][0] * a[1][1] - a[0][1] * a[1][0];
break;
//System.out.println(this.zhi);
}
}
return this.zhi;
}
}
public class Main {
public static void main(String[] args) {
int[][] aa = {{6, 1, 1, 1}, {6, -1, 1, -1}, {6, 2, 4, 8}, {-6, -2, 4, -8}};
// int[][] aa = {{1, 6, 1, 1}, {1, 6, 1, -1}, {1, 6, 4, 8}, {1, -6, 4, -8}};
df s = new df();
int[][] bb = s.yzs(aa, 1, 2);
/* for (int m = 0; m < bb.length; m++) {
for (int n = 0; n < bb[0].length; n++) {
System.out.print(bb[m][n]);
}
System.out.println();
}*/
System.out.println(s.hlsz(aa));
//
}
}
我的方法是行列式的定义,行列式的第一行乘以相应代数余子式的值~~
求高手帮忙看看程序那里错了?
展开