我有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
}
}
}
}
}
}
它不起作用。
答案 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;
}