将关系转换为矩阵

时间:2015-05-17 17:20:48

标签: matrix

我有2套和1关系。我想用矩阵显示它们。

char a[] = "12345";
char b[] = "ABCDE";
char r[] = "1C2B3E4D5A";

    int rel[LA][LA] = {
     /* A   B   C   D   E*/  
 /* 1*/{0,  0,  0,  0,  0} ,  
 /* 2*/{0,  0,  0,  0,  0} ,  
 /* 3*/{0,  0,  0,  0,  0} ,  
 /* 4*/{0,  0,  0,  0,  0} ,  
 /* 5*/{0,  0,  0,  0,  0}  };

在char数组中,每个char都是一个元素

char a[] = "12345";  is A{1,2,3,4,5}
Relation char r[] = "1C2B3E4D5A"; is R= {(1,C),(2.B).... }

我的问题是如何在Matrix上显示它们如果矩阵中的A和B之间存在关系,则此点得1。

输出必须是这样的:

int rel[LA][LA] = {
     /* A   B   C   D   E*/  
 /* 1*/{0,  0,  1,  0,  0} ,  
 /* 2*/{0,  1,  0,  0,  0} ,  
 /* 3*/{0,  0,  0,  0,  1} ,  
 /* 4*/{0,  0,  0,  1,  0} ,  
 /* 5*/{1,  0,  0,  0,  0}  };

首先我尝试了:

for(i=0;i<LR-1;i=i+2){  // Look at element from A
for(j=0;j<LA;j++){         // Look at A
    if(r[i]==a[j]){   
       for(k=1;k<LR;k=k+2){ // Look at element from B
         for(m=0;m<LA;m++){  // Look at B
            if(r[k]==b[m]){
                rel[j][m]=1;   // if both exist that point gets 1
            }
         }
       }
    }
     }
  }

它不起作用。

1 个答案:

答案 0 :(得分:0)

以下是您问题的解决方案:

public static void main(String[] args) {
    char[] a = "12345".toCharArray();
    char[] b = "ABCDE".toCharArray();
    char[] r = "1C2B3E4D5A".toCharArray();
    int LA=a.length;
    int LB=b.length;
    int LR=r.length;
    int[][] rel=new int[LA][LB];
    for(int i=0;i<LR;i+=2){
        int indexa=index(a,r[i]);
        int indexb=index(b,r[i+1]);
        rel[indexa][indexb]=1;

    }
    // Print out the matrix
    for(int i=0;i<LA;i++){
        for(int j=0;j<LB;j++){
            System.out.print(rel[i][j]);
        }
        System.out.println("");
    }

}
/**
 * Return the position of a value v array arr
 */
public static int index(char[] arr,char v){
    for(int i=0;i<arr.length;i++){
        if(arr[i]==v){
            return i;
        }
    }
    return -1;
}