using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace work2
{
class Program
{
static void Main(string[] args)
{
String[] teamAName = new String[3] { "A", "B", "C" }; // 名字表 带初始化值的 字符串数组
String[] teamBName = new String[3] { "X", "Y", "Z" }; // 名字表
int[] pairMask = new int[3] { 6, 7, 2 };// 配对表 带初始化值的 整数数组
for (int rep = 3; rep-- != 0;) // 搜索循环 逆向循环,后置自减法
{
for (int i = 0; i < 3; ++i) // A队 的配对表扫描循环 正向循环
{
int m = pairMask[i];
if (m == 0) continue; // 为0 表示已经排除了 终结本次循环,进入下一次循环(后面的代码不执行了)
if ((m & (m - 1)) != 0) continue;// 2 幂检验 位码与操作, 终结本次循环,进入下一次循环(后面的代码不执行了)
int b = -1;
for (int k = 0; k < 3; ++k) // 消除编码 用的循环
{
pairMask[k] &= ~m; // 消除编码 位码与,位码反操作
if (m == (1 << k)) b = k; // 转换为 B 队的序号 位码移动操作
}
Console.WriteLine("{0} : {1}", teamAName[i], teamBName[b]); // 输出 数组访问,控制台输出
break; // 终结该层循环,到上一层
}
}
}
}
}