读书人

功能数组相乘有关问题

发布时间: 2012-01-21 21:31:43 作者: rapoo

功能数组相乘问题
F=Cjk*Xij*Xi+1,k
其中假设Cjk=[1 2 3
2 3 4
4 5 6]
Xij和Xi+1,k均取0或者1,
我要实现的意思是:当i选择j,i+1选择k即Xij=Xi+1k=1时,根据j和k相应的值到Cjk中找到相应的值相乘,例如
xij=[0 1
0 0 1]
则i=0时j=1,i+1=1而k=2,则相应的Cjk为C12=4,则F=4

这种功能用java应该怎么实现呢???

[解决办法]

Java code
public class Test{        public static void main(String[] args) throws Exception{        int[][] m1={            {0, 7, 4, 9},            {7, 0, 5, 6},            {4, 5, 0, 2},            {9, 6, 2, 0}        };        int[][] m2={            {1},            {0, 0, 1},            {0, 1},            {0, 0, 0, 4}        };        for(int i=0;i<=2;i++){            System.out.println("第"+i+"人去过的地方与第"+(i+1)+"人去过的地方之间的距离是:");            System.out.println(getDistance(m1,m2,i));        }    }    /*求第i个人去过的地方与第i+1个人去过的地方之间的距离    * @param matrixC 各个地方之间的距离    * @param matrixX 每个人去过什么地方    * @param i 第i个人。    */    public static int getDistance(int[][] matrixC,int[][] matrixX,int i){        return getDistance(matrixC,matrixX,i,i+1);    }    /*求第i个人去过的地方与第k个人去过的地方之间的距离    * @param matrixC 各个地方之间的距离    * @param matrixX 每个人去过什么地方    * @param i 第i个人。    * @param k 第k个人。    */    public static int getDistance(int[][] matrixC,int[][] matrixX,int i,int k){        if(i>matrixX.length-1||i<0||k>matrixX.length-1||k<0) return -1;        int targetI=0,targetI1=0;        /*求i去过什么地方        */        for(int j=0;j<matrixX[i].length;j++){            if(matrixX[i][j]==1){                targetI=j;                break;            }        }        /*求j去过什么地方        */        for(int j=0;j<matrixX[k].length;j++){            if(matrixX[i+1][j]==1){                targetI1=j;                break;            }        }        return matrixC[targetI][targetI1];    }} 

读书人网 >J2SE开发

热点推荐