查找每个单词的最佳匹配而无需双重匹配

时间:2018-07-14 19:53:16

标签: arrays algorithm kotlin string-matching

我有两个字符串数组,我想将第一个数组的每个字符串与第二个字符串进行匹配,并显示平均得分。

在Kotlin中天真的实现是:

int id = SQLUser.getIntFromDatabase("SELECT * FROM Players WHERE UUID = " + uuid.toString() + "", "ID");
if(id==-1) channel.sendMessage("ID is not valid please login to the WidowMC").queue();
else 
{
    Message messa = new MessageBuilder().append(Utils.getName(uuid) + " Skull").build();
    channel.sendFile(Utils.getSkullFile(Utils.getName(uuid)), messa).queue();
    channel.sendMessage("ID = " + id);
}

public static void excuteQuery(String query) 
{
    Connection conn = Core.getConnection();
    try
    {
        Statement statement = conn.createStatement();
        statement.executeQuery(query);
    } catch (SQLException e)
    {
        e.printStackTrace();
    }
}

它打印:

fun main(args: Array<String>) {
    val jw = JaroWinklerDistance()
    val a = arrayOf("FRITZ", "FRUITS")
    val b = arrayOf("FRITZ", "MARTIN", "FOOBAR")

    var score = 0.0
    a.forEach { x ->
        var current = 0.0
        b.forEach { y ->
            current = max(current, jw.apply(x, y))
        }
        score += current
    }
    score /= a.size

    println("Average score $score")
}

但这不是我所需要的。两个数组中的单词Average score 0.9288888888888889 已经完全匹配。因此,应将其余的FRITZFRUITSMARTIN进行匹配。因此平均得分应计算为:

FOOBAR

此问题是否类似于任何现有问题?我只是在寻找算法,而不是代码。

我没有运气就尝试了不同的方法。谁能帮忙吗?

1 个答案:

答案 0 :(得分:1)

问题在于找到最佳匹配。  这称为Assignment Problem