解题思路:
用二维数组存储对应的满足条件的单词序号。
如:
类别用字符串数组s1[]表示;
单词用字符串数组s2[]表示;
二维数组a[][],它的每一行代表了一个类别,这一行的每一列用来存储满足条件的单词的序号。
自我感觉,存储很容易,不过,输出的时候会有点麻烦。
/*
* 二维数组int array[][] = new int[3][3];
行长度:array.length
列长度:array[i].length
class Test{
for(int i = 0; i < array.length; i++){
for(int j = 0; j < array[i].length; j++){
}
}
}
*/
import java.util.*;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
int c = input.nextInt();
int n = input.nextInt();
String s1[] = new String[101];
String s2[] = new String[101];
int a[][] =new int[101][101];
int i, j,k1;
int sum;
for (i = 1; i <= c; i++) {
s1[i] = input.next();
}
for (i =1; i <= n; i++) {
s2[i] = input.next();
}
for (i = 1; i <= c; i++) {
int k=0;
for (j = 1; j <= n; j++) {
if (s2[j].charAt(0) == s1[i].charAt(0)
|| s2[j].charAt(0) == s1[i].toLowerCase().charAt(0)) {
a[i][++k] = j; // s1[i].charAt(0).toLowerCase()順序問題
}
}
}
for(i=1;i<=c;i++){
sum=0;
for(j=1;j<=n;j++){
if(a[i][j]!=0) sum++;
}
if(sum==0) continue;
else{
for(k1=1;k1<sum;k1++)
System.out.print(s2[a[i][k1]]+" ");
System.out.print(s2[a[i][sum]]);
System.out.println();
}
} System.out.println();
}
}
}