You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现两个多维数组String[,]的全可能配对及通配匹配?

解决多维数组球员-球队配对问题

我来帮你搞定这个球员和球队的配对需求,核心就是根据球员的联赛标签(包括通配符*)匹配合法的球队,生成所有可能的组合。先把规则再理清楚:

  • 普通联赛标签的球员:只能效力于对应联赛的球队(比如德甲球员只能去拜仁慕尼黑,西甲球员可以去皇马或巴萨)
  • 带*标记的球员:可以效力于所有列出的球队

代码实现(C#)

假设我们的playerPairs数组已经补全(比如包含球员姓名和对应的联赛/标记),可以用下面的逻辑来生成所有合法配对:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // 定义球队-联赛配对数组
        String[,] leaguePairs = new String[3, 2] { 
            { "Bayern Munich", "Bundesliga" }, 
            { "Real Madrid", "La Liga" }, 
            { "FC Barcelona", "La Liga" } 
        };
        
        // 示例球员-联赛/标记配对数组
        String[,] playerPairs = new String[4, 2] { 
            { "Thomas Müller", "Bundesliga" }, 
            { "Karim Benzema", "La Liga" }, 
            { "Lionel Messi", "*" }, 
            { "Manuel Neuer", "Bundesliga" } 
        };
        
        // 存储所有合法配对
        List<Tuple<string, string>> validPairs = new List<Tuple<string, string>>();
        
        // 遍历每个球员
        for (int i = 0; i < playerPairs.GetLength(0); i++)
        {
            string playerName = playerPairs[i, 0];
            string playerLeague = playerPairs[i, 1];
            
            if (playerLeague == "*")
            {
                // 通配符球员:匹配所有球队
                for (int j = 0; j < leaguePairs.GetLength(0); j++)
                {
                    string teamName = leaguePairs[j, 0];
                    validPairs.Add(Tuple.Create(playerName, teamName));
                }
            }
            else
            {
                // 普通联赛球员:匹配对应联赛的球队
                for (int j = 0; j < leaguePairs.GetLength(0); j++)
                {
                    string teamName = leaguePairs[j, 0];
                    string teamLeague = leaguePairs[j, 1];
                    
                    if (teamLeague == playerLeague)
                    {
                        validPairs.Add(Tuple.Create(playerName, teamName));
                    }
                }
            }
        }
        
        // 输出所有配对
        Console.WriteLine("所有合法球员-球队配对:");
        foreach (var pair in validPairs)
        {
            Console.WriteLine($"{pair.Item1} → {pair.Item2}");
        }
    }
}

代码说明

  1. 遍历逻辑:先逐个处理每个球员,根据其联赛标签分支处理
  2. 通配符处理:如果球员标签是*,直接遍历所有球队生成配对
  3. 联赛匹配:普通球员则筛选出leaguePairs中同联赛的球队,再生成配对
  4. 结果存储:用List<Tuple<string, string>>来存储所有合法组合,你也可以自定义一个PlayerTeamPair类来让结构更清晰

示例输出

运行上面的代码会得到以下结果:

所有合法球员-球队配对:
Thomas Müller → Bayern Munich
Karim Benzema → Real Madrid
Karim Benzema → FC Barcelona
Lionel Messi → Bayern Munich
Lionel Messi → Real Madrid
Lionel Messi → FC Barcelona
Manuel Neuer → Bayern Munich

内容的提问来源于stack exchange,提问作者Jacman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:24:27