0-1整数规划隐枚举法代码 (直接复制及可运行)
- 格式:doc
- 大小:168.00 KB
- 文档页数:16
§5.4 0—1型整数规划模型1、 0—1型整数规划模型概述整数规划指的是决策变量为非负整数值的一类线性规划,在实际问题的应用中,整数规划模型对应着大量的生产计划或活动安排等决策问题,整数规划的解法主要有分枝定界解法及割平面解法(这里不作介绍,感兴趣的读者可参考相关书籍)。
在整数规划问题中,0—1型整数规划则是其中较为特殊的一类情况,它要求决策变量的取值仅为0或1,在实际问题的讨论中,0—1型整数规划模型也对应着大量的最优决策的活动与安排讨论,我们将列举一些模型范例,以说明这个事实。
0—1型整数规划的的数学模型为:目标函数 n n x c x c x c z Min Max +++=ΛΛ2211)( 约束条件为:⎪⎪⎩⎪⎪⎨⎧==≥≤++=≥≤++=≥≤++1| 0 ) ,() ,() ,(22112222212111212111n m n mn m m n n n n x x x b x a x a x a b x a x a x a b x a x a x a , , ,21ΛΛΛΛΛΛΛΛΛΛΛΛ这里,0 | 1表示0或1。
2、0—1型整数规划模型的解法0—1型整数规划模型的解法一般为穷举法或隐枚举法,穷举法指的是对决策变量nx x x , , ,21ΛΛ的每一个0或1值,均比较其目标函数值的大小,以从中求出最优解。
这种方法一般适用于决策变量个数n 较小的情况,当n 较大时,由于n 个0、1的可能组合数为n2,故此时即便用计算机进行穷举来求最优解,也几乎是不可能的。
隐枚举法是增加了过滤条件的一类穷举法,该法虽能减少运算次数,但有的问题并不使用。
此时,就只能用穷举法了。
3. 应用实例例1 工程上马的决策问题1)问题的提出某部门三年内有四项工程可以考虑上马,每项工程的期望收益和年度费用(千元)如下表所示:假定每一项已选定的工程要在三年内完成,是确定应该上马哪些工程,方能使该部门可能的期望收益最大。
枚举法是一种通过列举所有可能情况来解决问题的方法。
对于1到100的数字,我们可以使用Python的for循环来枚举所有的数字。
以下是一个简单的Python程序,使用枚举法找出1到100之间的所有奇数:python复制代码for i in range(1, 101):if i % 2 != 0:print(i)这个程序会打印出1到100之间的所有奇数。
range(1, 101)函数生成一个从1到100的数字序列,然后for 循环遍历这个序列。
在循环中,我们使用if语句检查当前的数字是否是奇数(即除以2的余数不等于0),如果是,就打印出来。
如果你想找出1到100之间的所有素数,你可以使用一个稍微复杂的算法,比如埃拉托斯特尼筛法(Sieve of Eratosthenes)。
这个算法的基本思想是,从2开始,把所有的偶数都标记为合数,然后找出所有的未被标记的数字,这些数字就是素数。
以下是一个使用Python实现的埃拉托斯特尼筛法的例子:python复制代码def sieve_of_eratosthenes(n):primes = [True] * (n+1)primes[0] = primes[1] = Falsefor i in range(2, int(n**0.5)+1):if primes[i]:for j in range(i**2, n+1, i):primes[j] = Falsereturn [p for p in range(2, n+1) if primes[p]]print(sieve_of_eratosthenes(100))这个程序会打印出1到100之间的所有素数。
M文件function [intx,intf] = ZeroOneprog(c,A,b,x0)%目标函数系数向量,c%不等式约束矩阵,A%不等式约束右端向量,b%初始整数可行解,x0%目标函数取最小值时的自变量值,intx%目标函数的最小值,intfsz = size(A);if sz(2) < 3[intx,intf] = Allprog(c,A,b); %穷举法else[intx,intf] = Implicitprog(c,A,b,x0); %隐枚举法endfunction [intx,intf] = Allprog(c,A,b);sz_A = size(A);rw = sz_A(1);col = sz_A(2);minf = inf;for i=0:(2^(col)-1) %枚举空间x1 = myDec2Bin(i,col); %十进制转化为二进制if A*x1 >= b %是否满足约束条件f_tmp = c*x1;if f_tmp < minfminf = f_tmp;intx = x1;intf = minf;elsecontinue;endelsecontinue;endendfunction [intx,intf] = Implicitprog(c,A,b,x0)%隐枚举法sz_A = size(A);rw = sz_A(1);col = sz_A(2);minf = c*x0;A = [A;-c];b = [b;-minf]; %增加了一个限制分量for i=0:(2^(col)-1)x1 = myDec2Bin(i,col);if A*x1 >= bf_tmp = c*x1;if f_tmp < minfminf = f_tmp;b(rw+1,1) = -minf; %隐枚举法与穷举法的区别在于此句 intx = x1;intf = minf;elsecontinue ;endelsecontinue ;endendfunction y = myDec2Bin(x,n) %十进制转化为二进制str = dec2bin(x,n);for j=1:ny(j) = str2num(str(j));endy = transpose(y);求解实例求解下面0-1规划()⎪⎩⎪⎨⎧=≥++++≥++++++++=105224287453232min 54321543215432154321或,x ,x ,x ,x x x x x x x x x x x x ,s.t.x x x x x x f在MATLAB 命令框在输入下列命令:>> c=[1 2 3 1 1];>> A=[2 3 5 4 7;1 1 4 2 2];>> b=[8;5];>> x0=[1;1;1;1;1]’;>> [intx,intf]=ZetoOneprog(c,A,b,x0)所得结果如下:intx =111 intf =3。
0-1型整数线性规划模型理论(1) 0-1型整数线性规划0-1型整数线性规划是一类特殊的整数规划,它的变量仅取值0或1.其模型如下:T min ..01(1,2,,)j f s t x j n =⎧⎨=⎩c xAx =b 取或 其中()T 12,,,,n c c c =c ()T 12,,,,n x x x =x (),ij m na ⨯=A ()T 12,,,.mb b b =b 称此时的决策变量为0-1变量,或称二进制变量.在实际问题中,如果引进0-1变量,就可以把各种需要分别讨论的线性(或非线性)规划问题统一在一个问题中讨论了.(2) 求解0-1型整数线性规划的分支界定法Matlab 指令x = bintprog(f,A,b): 求解0-1型整数线性规划,用法类似于linprog.x = bintprog(f,A,b,Aeq,beq): 求解下述线性规划问题:T min ,z =f x ≤Ax b ,≤Ax b ,⋅≤Aeq x beq ,x 分量取0或1.x = bintprog(f,A,b,Aeq,beq,x0): 指迭代初值x0,如果没有不等式约束,可用[]代替A,b 表示默认,如果没有等式约束,可用[]代替Aeq 和beq 表示默认;用[x,fval]代替上述各命令行中左边的x,则可得到最优解处的函数值fval.例如:求解0-1型整数线性规划模型:1min ni i Z x ==∑()()()12345356894679123471256758129232200..20002001(1,2,,9)j x x x x x x x x x x x x x x x x x x x s t x x x x x x x x x x x j ⎧-++++≤-⎪-++++≤-⎪⎪-+++≤-⎪⎪--+≤⎪-≤⎪⎨--+≤⎪⎪-≤⎪-+≤⎪⎪--+≤⎪⎪==⎩或用Matlab 软件编程可解得1236791x x x x x x ======,其他变量为0,共六门课,满足所给条件, Matlab程序代码如下:c = ones(1,9);a =[-1,-1,-1,-1,-1,0,0,0,0;0,0,-1,0,-1,-1,0,-1,-1;0,0,0,-1,0,-1,-1,0,-1;-1,-1,2,0,0,0,0,0,0;0,0,0,1,0,0,-1,0, 0;-1,-1,0,0,2,0,0,0,0;0,0,0,0,0,1,-1,0,0;0,0,0,0,-1,0,0,1,0;-1,-1,0,0,0,0,0,0,2];b = [-2;-3;-2;0;0;0;0;0;0];A = [5 4 4 3 4 3 2 2 3];x = bintprog(c,a,b)f = A*x运行结果:Optimization terminated.x =111111f =20。
枚举维基百科,自由的百科全书跳转到:导航、搜索在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。
这两种类型经常(但不总是)重叠。
枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见。
例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY,就是一个枚举。
枚举的说明与结构和联合相似,其形式为:enum 枚举名{标识符[=整型常数],标识符[=整型常数],...标识符[=整型常数],} 枚举变量;如果枚举没有初始化,即省掉"=整型常数"时,则从第一个标识符开始,顺次赋给标识符0, 1, 2, ...。
但当枚举中的某个成员赋值后,其后的成员按依次加1的规则确定其值。
例如下列枚举说明后, x1, x2, x3, x4的值分别为0, 1, 2, 3。
enum string{x1, x2, x3, x4}x;当定义改变成:enum string{x1,x2=0,x3=50,x4,}x;则x1=0, x2=0, x3=50, x4=51 注意: 1. 枚举中每个成员(标识符)结束符是",", 不是";", 最后一个成员可省略 ","。
2. 初始化时可以赋负数,以后的标识符仍依次加1。
3. 枚举变量只能取枚举说明结构中的某个标识符常量。
例如:enum string{x1=5,x2,x3,x4,};enum string x=x3;此时,枚举变量x实际上是7。
这是与数学相关的小作品。
你可以通过编辑或修订扩充其内容。
来自“/w/index.php?title=枚举&oldid=14460033”查看条目评分给本文评分这是什么?可信度客观性完整性可读性我非常了解与本主题相关的知识(可选)我有与其有关的大学学位这是我专业的一部分个人对此有深厚的兴趣文中未列出我所了解知识的来源我想帮助改善维基百科,请给我发送一封电子邮件(可选)我们将向您发送确认电子邮件。
0—1型整数规划模型1. 0—1型整数规划模型概述整数规划指的是决策变量为非负整数值的一类线性规划,在实际问题的应用中,整数规划模型对应着大量的生产计划或活动安排等决策问题,整数规划的解法主要有分枝定界解法及割平面解法(这里不作介绍,感兴趣的读者可参考相关书籍)。
在整数规划问题中,0—1型整数规划则是其中较为特殊的一类情况,它要求决策变量的取值仅为0或1,在实际问题的讨论中,0—1型整数规划模型也对应着大量的最优决策的活动与安排讨论,我们将列举一些模型范例,以说明这个事实。
0—1型整数规划的的数学模型为:目标函数 n n x c x c x c z Min Max +++= 2211)(约束条件为:⎪⎪⎩⎪⎪⎨⎧==≥≤++=≥≤++=≥≤++1| 0 ) ,() ,() ,(22112222212111212111n m n mn m m n n n n x x x b x a x a x a b x a x a x a b x a x a x a , , ,21这里,0 | 1表示0或1。
2. 0—1型整数规划模型的解法0—1型整数规划模型的解法一般为穷举法或隐枚举法,穷举法指的是对决策变量nx x x , , ,21 的每一个0或1值,均比较其目标函数值的大小,以从中求出最优解。
这种方法一般适用于决策变量个数n 较小的情况,当n 较大时,由于n 个0、1的可能组合数为n2,故此时即便用计算机进行穷举来求最优解,也几乎是不可能的。
隐枚举法是增加了过滤条件的一类穷举法,该法虽能减少运算次数,但有的问题并不使用。
此时,就只能用穷举法了。
3. 应用实例例1 工程上马的决策问题1)问题的提出某部门三年内有四项工程可以考虑上马,每项工程的期望收益和年度费用(千元)如下表所示:假定每一项已选定的工程要在三年内完成,是确定应该上马哪些工程,方能使该部门可能的期望收益最大。
2)模型分析与变量的假设这是工程上马的决策问题,对任一给定的工程而言,它只有两种可能,要么上马,要么不上马,这两种情况分别对应二进制数中的1、0,大凡这样的实际背景所对应的工程问题,大都可考虑用0—1型整数规划模型建立其相应的模型。
华北电力大学数理系邵森using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace zhengshuguihuayinmeijufa{public class Program{public static int Min(int[] V){int min = V[0];for (int i = 0; i < V.Length-1 ; i++)for (int j = 1; j < V.Length ; j++){if (min > V[j])min = V[j];}return min;}public static int Max(int[] V){int max = V[0];for (int i = 0; i < V.Length - 1; i++)for (int j = 1; j < V.Length; j++){if (max<V[j])max = V[j];}return max;}public static int PaiDing(int [,] T,int a, int b, int c,int d,int e,int f,int g,int t,int L,int H,int U,int []M) {if (U == 3){int m = 0;for (int i = 0; i < H; i++){int j = 0;if ((a * T[i, j] + b * T[i, j + 1] + c * T[i, j + 2] <= T[i, 3]))m++;}if (m == H )t = a * M[0] + b * M[1] + c * M[2];}if (U == 4){int m = 0;for (int i = 0; i < H; i++){int j = 0;if ((a * T[i, j] + b * T[i, j + 1] + c * T[i, j + 2] + d * T[i, 3] <= T[i, 4]))m++;}if (m == H )t = a * M[0] + b * M[1] + c * M[2] + d * M[3];}if (U == 5){int m = 0;for (int i = 0; i < H; i++){int j = 0;if ((a * T[i, j] + b * T[i, j + 1] + c * T[i, j + 2] +d* T[i, 3]+e*T[i,4]<=T[i,5]))m++;}if (m == H )t = a*M[0]+b*M[1]+c*M[2]+d*M[3]+e*M[4];}if (U == 6){int m = 0;for (int i = 0; i < H; i++){int j = 0;if ((a * T[i, j] + b * T[i, j + 1] + c * T[i, j + 2] + d * T[i, 3] + e * T[i, 4] +f*T[i, 5]<=T[i,6]))m++;}if (m == H )t = a*M[0]+b*M[1]+c*M[2]+d*M[3]+e*M[4]+f*M[5];}if (U == 7){int m = 0;for (int i = 0; i < H; i++){int j = 0;if ((a * T[i, j] + b * T[i, j + 1] + c * T[i, j + 2] + d * T[i, 3] + e * T[i, 4] + f * T[i, 5] +g*T[i, 6]<=T[i,7]))m++;}if (m == H)t = a*M[0]+b*M[1]+c*M[2]+d*M[3]+e*M[4]+f*M[5]+g*M[6];}return t;}public static int PaiDing1(int[,] T, int a, int b, int c, int d, int e, int f, int g, int t, int L, int H, int U, int[] M){if (U == 3){int m = 0;for (int i = 0; i < H; i++){int j = 0;if ((a * T[i, j] + b * T[i, j + 1] + c * T[i, j + 2] >= T[i, 3]))m++;}if (m == H)t = a * M[0] + b * M[1] + c * M[2];elset = t + 10000;}if (U == 4){int m = 0;for (int i = 0; i < H; i++){int j = 0;if ((a * T[i, j] + b * T[i, j + 1] + c * T[i, j + 2] + d * T[i, 3] >= T[i, 4]))m++;}if (m == H)t = a * M[0] + b * M[1] + c * M[2] + d * M[3];elset = t + 10000;}if (U == 5){int m = 0;for (int i = 0; i < H; i++){int j = 0;if ((a * T[i, j] + b * T[i, j + 1] + c * T[i, j + 2] + d * T[i, 3] + e * T[i, 4] >= T[i, 5]))m++;}if (m == H)t = a * M[0] + b * M[1] + c * M[2] + d * M[3] + e * M[4];elset = t + 10000;}if (U == 6){int m = 0;for (int i = 0; i < H; i++){int j = 0;if ((a * T[i, j] + b * T[i, j + 1] + c * T[i, j + 2] + d * T[i, 3] + e * T[i, 4] + f * T[i, 5] >= T[i, 6]))m++;}if (m == H)t = a * M[0] + b * M[1] + c * M[2] + d * M[3] + e * M[4] + f * M[5];elset = t + 10000;}if (U == 7){int m = 0;for (int i = 0; i < H; i++){int j = 0;if ((a * T[i, j] + b * T[i, j + 1] + c * T[i, j + 2] + d * T[i, 3] + e * T[i, 4] + f * T[i, 5] + g * T[i, 6] >=T[i, 7]))m++;}if (m == H)t = a * M[0] + b * M[1] + c * M[2] + d * M[3] + e * M[4] + f * M[5] + g * M[6];elset = t + 10000;}return t;}public static string FH(int[,] T, int[] M, int U, int Z, int L, int H,string str)//T为a传ä?入¨?的Ì?矩?阵¨®V为a记?录?所¨´求¨®解a的Ì?值¦ÌM目?标À¨º函¡¥数ºy的Ì?数ºy组Á¨¦//U变À?元a的Ì?个?数ºyZ为a最Á?优®?值¦Ì{if (U == 3){int N = 8;int[] K = new int[N];string[] str1 = new string[N];K[0] = PaiDing(T, 0, 0, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[0] = "000";K[1] = PaiDing(T, 0, 0, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[1] = "001";K[2] = PaiDing(T, 0, 1, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[2] = "010";str1[3] = "011";str1[4] = "100";K[3] = PaiDing(T, 0, 1, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[5] = "101";K[4] = PaiDing(T, 1, 0, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[6] = "110";K[5] = PaiDing(T, 1, 0, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[7] = "111";K[6] = PaiDing(T, 1, 1, 0, 0, 0, 0, 0, 0, L, H, U, M);K[7] = PaiDing(T, 1, 1, 1, 0, 0, 0, 0, 0, L, H, U, M);Z = Max(K);int j=0;for (int i = 0; i < N; i++){if (K[i] == Z)j = i;}str = str1[j];}if (U == 4){int N = 16;int[] K = new int[N];string[] str1 = new string[N];K[0] = PaiDing(T, 0, 0, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[0] = "0000";K[1] = PaiDing(T, 0, 0, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[1] = "0001";K[2] = PaiDing(T, 0, 0, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[2] = "0010";K[3] = PaiDing(T, 0, 0, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[3] = "0011";K[4] = PaiDing(T, 0, 1, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[4] = "0100";K[5] = PaiDing(T, 0, 1, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[5] = "0101";K[6] = PaiDing(T, 0, 1, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[6] = "0110";K[7] = PaiDing(T, 0, 1, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[7] = "0111";K[8] = PaiDing(T, 1, 0, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[8] = "1000";K[9] = PaiDing(T, 1, 0, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[9] = "1001";K[10] = PaiDing(T, 1, 0, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[10] = "1010";K[11] = PaiDing(T, 1, 0, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[11] = "1011";K[12] = PaiDing(T, 1, 1, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[12] = "1100";K[13] = PaiDing(T, 1, 1, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[13] = "1101";K[14] = PaiDing(T, 1, 1, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[14] = "1110";K[15] = PaiDing(T, 1, 1, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[15] = "1111";Z = Max(K);int j = 0;for (int i = 0; i < N; i++){if (K[i] == Z)j = i;}str = str1[j];}if (U == 5){int N = 32;int[] K = new int[N];string[] str1 = new string[N];K[0] = PaiDing(T, 0, 0, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[0] = "00000";K[1] = PaiDing(T, 0, 0, 0, 0, 1, 0, 0, 0, L, H, U, M); str1[1] = "00001";K[2] = PaiDing(T, 0, 0, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[2] = "00010";K[3] = PaiDing(T, 0, 0, 0, 1, 1, 0, 0, 0, L, H, U, M); str1[3] = "00011";K[4] = PaiDing(T, 0, 0, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[4] = "00100";K[5] = PaiDing(T, 0, 0, 1, 0, 1, 0, 0, 0, L, H, U, M); str1[5] = "00101";K[6] = PaiDing(T, 0, 0, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[6] = "00110";K[7] = PaiDing(T, 0, 0, 1, 1, 1, 0, 0, 0, L, H, U, M); str1[7] = "00111";K[8] = PaiDing(T, 0, 1, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[8] = "01000";K[9] = PaiDing(T, 0, 1, 0, 0, 1, 0, 0, 0, L, H, U, M); str1[9] = "01001";K[10] = PaiDing(T, 0, 1, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[10] = "01010";K[11] = PaiDing(T, 0, 1, 0, 1, 1, 0, 0, 0, L, H, U, M); str1[11] = "01011";K[12] = PaiDing(T, 0, 1, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[12] = "01100";K[13] = PaiDing(T, 0, 1, 1, 0, 1, 0, 0, 0, L, H, U, M); str1[13] = "01101";K[14] = PaiDing(T, 0, 1, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[14] = "01110";K[15] = PaiDing(T, 0, 1, 1, 1, 1, 0, 0, 0, L, H, U, M); str1[15] = "01111";K[16] = PaiDing(T, 1, 0, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[16] = "10000";K[17] = PaiDing(T, 1, 0, 0, 0, 1, 0, 0, 0, L, H, U, M); str1[17] = "10001";K[18] = PaiDing(T, 1, 0, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[18] = "10010";K[19] = PaiDing(T, 1, 0, 0, 1, 1, 0, 0, 0, L, H, U, M); str1[19] = "10011";K[20] = PaiDing(T, 1, 0, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[20] = "10100";K[21] = PaiDing(T, 1, 0, 1, 0, 1, 0, 0, 0, L, H, U, M); str1[21] = "10101";K[22] = PaiDing(T, 1, 0, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[22] = "10110";K[23] = PaiDing(T, 1, 0, 1, 1, 1, 0, 0, 0, L, H, U, M); str1[23] = "10111";K[24] = PaiDing(T, 1, 1, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[24] = "11000";K[25] = PaiDing(T, 1, 1, 0, 0, 1, 0, 0, 0, L, H, U, M); str1[25] = "11001";K[26] = PaiDing(T, 1, 1, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[26] = "11010";K[27] = PaiDing(T, 1, 1, 0, 1, 1, 0, 0, 0, L, H, U, M); str1[27] = "11011";K[28] = PaiDing(T, 1, 1, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[28] = "11100";K[29] = PaiDing(T, 1, 1, 1, 0, 1, 0, 0, 0, L, H, U, M); str1[29] = "11101";K[30] = PaiDing(T, 1, 1, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[30] = "11110";K[31] = PaiDing(T, 1, 1, 1, 1, 1, 0, 0, 0, L, H, U, M); str1[31] = "11111";Z = Max(K);int j = 0;for (int i = 0; i < N; i++){if (K[i] == Z)j = i;}str = str1[j];}if (U == 6){int N = 64;int[] K = new int[N];string[] str1 = new string[N];K[0] = PaiDing(T, 0, 0, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[0] = "000000";K[1] = PaiDing(T, 0, 0, 0, 0, 0, 1, 0, 0, L, H, U, M); str1[1] = "000001";K[2] = PaiDing(T, 0, 0, 0, 0, 1, 0, 0, 0, L, H, U, M); str1[2] = "000010";K[3] = PaiDing(T, 0, 0, 0, 0, 1, 1, 0, 0, L, H, U, M); str1[3] = "000011";K[4] = PaiDing(T, 0, 0, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[4] = "000100";K[5] = PaiDing(T, 0, 0, 0, 1, 0, 1, 0, 0, L, H, U, M); str1[5] = "000101";K[6] = PaiDing(T, 0, 0, 0, 1, 1, 0, 0, 0, L, H, U, M); str1[6] = "000110";K[7] = PaiDing(T, 0, 0, 0, 1, 1, 1, 0, 0, L, H, U, M); str1[7] = "000111"; K[8] = PaiDing(T, 0, 0, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[8] = "001000"; K[9] = PaiDing(T, 0, 0, 1, 0, 0, 1, 0, 0, L, H, U, M); str1[9] = "001001"; K[10] = PaiDing(T, 0, 0, 1, 0, 1, 0, 0, 0, L, H, U, M); str1[10] = "001010"; K[11] = PaiDing(T, 0, 0, 1, 0, 1, 1, 0, 0, L, H, U, M); str1[11] = "001011"; K[12] = PaiDing(T, 0, 0, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[12] = "001100"; K[13] = PaiDing(T, 0, 0, 1, 1, 0, 1, 0, 0, L, H, U, M); str1[13] = "001101"; K[14] = PaiDing(T, 0, 0, 1, 1, 1, 0, 0, 0, L, H, U, M); str1[14] = "001110"; K[15] = PaiDing(T, 0, 0, 1, 1, 1, 1, 0, 0, L, H, U, M); str1[15] = "001111"; K[16] = PaiDing(T, 0, 1, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[16] = "010000"; K[17] = PaiDing(T, 0, 1, 0, 0, 0, 1, 0, 0, L, H, U, M); str1[17] = "010001"; K[18] = PaiDing(T, 0, 1, 0, 0, 1, 0, 0, 0, L, H, U, M); str1[18] = "010010"; K[19] = PaiDing(T, 0, 1, 0, 0, 1, 1, 0, 0, L, H, U, M); str1[19] = "010011"; K[20] = PaiDing(T, 0, 1, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[20] = "010100"; K[21] = PaiDing(T, 0, 1, 0, 1, 0, 1, 0, 0, L, H, U, M); str1[21] = "010101"; K[22] = PaiDing(T, 0, 1, 0, 1, 1, 0, 0, 0, L, H, U, M); str1[22] = "010110"; K[23] = PaiDing(T, 0, 1, 0, 1, 1, 1, 0, 0, L, H, U, M); str1[23] = "010111"; K[24] = PaiDing(T, 0, 1, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[24] = "011000"; K[25] = PaiDing(T, 0, 1, 1, 0, 0, 1, 0, 0, L, H, U, M); str1[25] = "011001"; K[26] = PaiDing(T, 0, 1, 1, 0, 1, 0, 0, 0, L, H, U, M); str1[26] = "011010"; K[27] = PaiDing(T, 0, 1, 1, 0, 1, 1, 0, 0, L, H, U, M); str1[27] = "011011"; K[28] = PaiDing(T, 0, 1, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[28] = "011100"; K[29] = PaiDing(T, 0, 1, 1, 1, 0, 1, 0, 0, L, H, U, M); str1[29] = "011101"; K[30] = PaiDing(T, 0, 1, 1, 1, 1, 0, 0, 0, L, H, U, M); str1[30] = "011110"; K[31] = PaiDing(T, 0, 1, 1, 1, 1, 1, 0, 0, L, H, U, M); str1[31] = "011111"; K[32] = PaiDing(T, 1, 0, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[32] = "100000"; K[33] = PaiDing(T, 1, 0, 0, 0, 0, 1, 0, 0, L, H, U, M); str1[33] = "100001"; K[34] = PaiDing(T, 1, 0, 0, 0, 1, 0, 0, 0, L, H, U, M); str1[34] = "100010"; K[35] = PaiDing(T, 1, 0, 0, 0, 1, 1, 0, 0, L, H, U, M); str1[35] = "100011"; K[36] = PaiDing(T, 1, 0, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[36] = "100100"; K[37] = PaiDing(T, 1, 0, 0, 1, 0, 1, 0, 0, L, H, U, M); str1[37] = "100101"; K[38] = PaiDing(T, 1, 0, 0, 1, 1, 0, 0, 0, L, H, U, M); str1[38] = "100110"; K[39] = PaiDing(T, 1, 0, 0, 1, 1, 1, 0, 0, L, H, U, M); str1[39] = "100111"; K[40] = PaiDing(T, 1, 0, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[40] = "101000"; K[41] = PaiDing(T, 1, 0, 1, 0, 0, 1, 0, 0, L, H, U, M); str1[41] = "101001"; K[42] = PaiDing(T, 1, 0, 1, 0, 1, 0, 0, 0, L, H, U, M); str1[42] = "101010"; K[43] = PaiDing(T, 1, 0, 1, 0, 1, 1, 0, 0, L, H, U, M); str1[43] = "101011"; K[44] = PaiDing(T, 1, 0, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[44] = "101100"; K[45] = PaiDing(T, 1, 0, 1, 1, 0, 1, 0, 0, L, H, U, M); str1[45] = "101101"; K[46] = PaiDing(T, 1, 0, 1, 1, 1, 0, 0, 0, L, H, U, M); str1[46] = "101110"; K[47] = PaiDing(T, 1, 0, 1, 1, 1, 1, 0, 0, L, H, U, M); str1[47] = "101111"; K[48] = PaiDing(T, 1, 1, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[48] = "110000"; K[49] = PaiDing(T, 1, 1, 0, 0, 0, 1, 0, 0, L, H, U, M); str1[49] = "110001"; K[50] = PaiDing(T, 1, 1, 0, 0, 1, 0, 0, 0, L, H, U, M); str1[50] = "110010"; K[51] = PaiDing(T, 1, 1, 0, 0, 1, 1, 0, 0, L, H, U, M); str1[51] = "110011"; K[52] = PaiDing(T, 1, 1, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[52] = "110100"; K[53] = PaiDing(T, 1, 1, 0, 1, 0, 1, 0, 0, L, H, U, M); str1[53] = "110101"; K[54] = PaiDing(T, 1, 1, 0, 1, 1, 0, 0, 0, L, H, U, M); str1[54] = "110110"; K[55] = PaiDing(T, 1, 1, 0, 1, 1, 1, 0, 0, L, H, U, M); str1[55] = "110111"; K[56] = PaiDing(T, 1, 1, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[56] = "111000"; K[57] = PaiDing(T, 1, 1, 1, 0, 0, 1, 0, 0, L, H, U, M); str1[57] = "111001"; K[58] = PaiDing(T, 1, 1, 1, 0, 1, 0, 0, 0, L, H, U, M); str1[58] = "111010"; K[59] = PaiDing(T, 1, 1, 1, 0, 1, 1, 0, 0, L, H, U, M); str1[59] = "111011"; K[60] = PaiDing(T, 1, 1, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[60] = "111100"; K[61] = PaiDing(T, 1, 1, 1, 1, 0, 1, 0, 0, L, H, U, M); str1[61] = "111101"; K[62] = PaiDing(T, 1, 1, 1, 1, 1, 0, 0, 0, L, H, U, M); str1[62] = "111110"; K[63] = PaiDing(T, 1, 1, 1, 1, 1, 1, 0, 0, L, H, U, M); str1[63] = "111111"; Z = Max(K);int j = 0;for (int i = 0; i < N; i++){if (K[i] == Z)j = i;}str = str1[j];}return str;}public static string FH1(int[,] T, int[] M, int U, int Z, int L, int H, string str)//T为a传ä?入¨?的Ì?矩?阵¨®V为a记?录?所¨´求¨®解a的Ì?值¦ÌM目?标À¨º函¡¥数ºy的Ì?数ºy组Á¨¦//U变À?元a的Ì?个?数ºyZ为a最Á?优®?值¦Ì{if (U == 3){int N = 8;int[] K = new int[N];string[] str1 = new string[N];K[0] = PaiDing(T, 0, 0, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[0] = "000";K[1] = PaiDing(T, 0, 0, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[1] = "001";K[2] = PaiDing(T, 0, 1, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[2] = "010";str1[3] = "011";str1[4] = "100";K[3] = PaiDing(T, 0, 1, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[5] = "101";K[4] = PaiDing(T, 1, 0, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[6] = "110";K[5] = PaiDing(T, 1, 0, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[7] = "111";K[6] = PaiDing(T, 1, 1, 0, 0, 0, 0, 0, 0, L, H, U, M);K[7] = PaiDing(T, 1, 1, 1, 0, 0, 0, 0, 0, L, H, U, M);Z = Min(K);int j = 0;for (int i = 0; i < N; i++){if (K[i] == Z)j = i;}str = str1[j];}if (U == 4){int N = 16;int[] K = new int[N];string[] str1 = new string[N];K[0] = PaiDing(T, 0, 0, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[0] = "0000";K[1] = PaiDing(T, 0, 0, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[1] = "0001";K[2] = PaiDing(T, 0, 0, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[2] = "0010";K[3] = PaiDing(T, 0, 0, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[3] = "0011";K[4] = PaiDing(T, 0, 1, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[4] = "0100";K[5] = PaiDing(T, 0, 1, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[5] = "0101";K[6] = PaiDing(T, 0, 1, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[6] = "0110";K[7] = PaiDing(T, 0, 1, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[7] = "0111";K[8] = PaiDing(T, 1, 0, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[8] = "1000";K[9] = PaiDing(T, 1, 0, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[9] = "1001";K[10] = PaiDing(T, 1, 0, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[10] = "1010";K[11] = PaiDing(T, 1, 0, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[11] = "1011";K[12] = PaiDing(T, 1, 1, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[12] = "1100";K[13] = PaiDing(T, 1, 1, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[13] = "1101";K[14] = PaiDing(T, 1, 1, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[14] = "1110";K[15] = PaiDing(T, 1, 1, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[15] = "1111";Z = Min(K);int j = 0;for (int i = 0; i < N; i++){if (K[i] == Z)j = i;}str = str1[j];}if (U == 5){int N = 32;int[] K = new int[N];string[] str1 = new string[N];K[0] = PaiDing(T, 0, 0, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[0] = "00000";K[1] = PaiDing(T, 0, 0, 0, 0, 1, 0, 0, 0, L, H, U, M); str1[1] = "00001";K[2] = PaiDing(T, 0, 0, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[2] = "00010";K[3] = PaiDing(T, 0, 0, 0, 1, 1, 0, 0, 0, L, H, U, M); str1[3] = "00011";K[4] = PaiDing(T, 0, 0, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[4] = "00100";K[5] = PaiDing(T, 0, 0, 1, 0, 1, 0, 0, 0, L, H, U, M); str1[5] = "00101";K[6] = PaiDing(T, 0, 0, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[6] = "00110";K[7] = PaiDing(T, 0, 0, 1, 1, 1, 0, 0, 0, L, H, U, M); str1[7] = "00111";K[8] = PaiDing(T, 0, 1, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[8] = "01000";K[9] = PaiDing(T, 0, 1, 0, 0, 1, 0, 0, 0, L, H, U, M); str1[9] = "01001";K[10] = PaiDing(T, 0, 1, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[10] = "01010";K[11] = PaiDing(T, 0, 1, 0, 1, 1, 0, 0, 0, L, H, U, M); str1[11] = "01011";K[12] = PaiDing(T, 0, 1, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[12] = "01100";K[13] = PaiDing(T, 0, 1, 1, 0, 1, 0, 0, 0, L, H, U, M); str1[13] = "01101";K[14] = PaiDing(T, 0, 1, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[14] = "01110";K[15] = PaiDing(T, 0, 1, 1, 1, 1, 0, 0, 0, L, H, U, M); str1[15] = "01111";K[16] = PaiDing(T, 1, 0, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[16] = "10000";K[17] = PaiDing(T, 1, 0, 0, 0, 1, 0, 0, 0, L, H, U, M); str1[17] = "10001";K[18] = PaiDing(T, 1, 0, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[18] = "10010";K[19] = PaiDing(T, 1, 0, 0, 1, 1, 0, 0, 0, L, H, U, M); str1[19] = "10011";K[20] = PaiDing(T, 1, 0, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[20] = "10100";K[21] = PaiDing(T, 1, 0, 1, 0, 1, 0, 0, 0, L, H, U, M); str1[21] = "10101";K[22] = PaiDing(T, 1, 0, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[22] = "10110";K[23] = PaiDing(T, 1, 0, 1, 1, 1, 0, 0, 0, L, H, U, M); str1[23] = "10111";K[24] = PaiDing(T, 1, 1, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[24] = "11000";K[25] = PaiDing(T, 1, 1, 0, 0, 1, 0, 0, 0, L, H, U, M); str1[25] = "11001";K[26] = PaiDing(T, 1, 1, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[26] = "11010";K[27] = PaiDing(T, 1, 1, 0, 1, 1, 0, 0, 0, L, H, U, M); str1[27] = "11011";K[28] = PaiDing(T, 1, 1, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[28] = "11100";K[29] = PaiDing(T, 1, 1, 1, 0, 1, 0, 0, 0, L, H, U, M); str1[29] = "11101";K[30] = PaiDing(T, 1, 1, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[30] = "11110";K[31] = PaiDing(T, 1, 1, 1, 1, 1, 0, 0, 0, L, H, U, M); str1[31] = "11111";Z = Min(K);int j = 0;for (int i = 0; i < N; i++){if (K[i] == Z)j = i;}str = str1[j];}if (U == 6){int N = 64;int[] K = new int[N];string[] str1 = new string[N];K[0] = PaiDing(T, 0, 0, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[0] = "000000"; K[1] = PaiDing(T, 0, 0, 0, 0, 0, 1, 0, 0, L, H, U, M); str1[1] = "000001"; K[2] = PaiDing(T, 0, 0, 0, 0, 1, 0, 0, 0, L, H, U, M); str1[2] = "000010"; K[3] = PaiDing(T, 0, 0, 0, 0, 1, 1, 0, 0, L, H, U, M); str1[3] = "000011"; K[4] = PaiDing(T, 0, 0, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[4] = "000100"; K[5] = PaiDing(T, 0, 0, 0, 1, 0, 1, 0, 0, L, H, U, M); str1[5] = "000101"; K[6] = PaiDing(T, 0, 0, 0, 1, 1, 0, 0, 0, L, H, U, M); str1[6] = "000110"; K[7] = PaiDing(T, 0, 0, 0, 1, 1, 1, 0, 0, L, H, U, M); str1[7] = "000111"; K[8] = PaiDing(T, 0, 0, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[8] = "001000"; K[9] = PaiDing(T, 0, 0, 1, 0, 0, 1, 0, 0, L, H, U, M); str1[9] = "001001"; K[10] = PaiDing(T, 0, 0, 1, 0, 1, 0, 0, 0, L, H, U, M); str1[10] = "001010"; K[11] = PaiDing(T, 0, 0, 1, 0, 1, 1, 0, 0, L, H, U, M); str1[11] = "001011"; K[12] = PaiDing(T, 0, 0, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[12] = "001100"; K[13] = PaiDing(T, 0, 0, 1, 1, 0, 1, 0, 0, L, H, U, M); str1[13] = "001101"; K[14] = PaiDing(T, 0, 0, 1, 1, 1, 0, 0, 0, L, H, U, M); str1[14] = "001110"; K[15] = PaiDing(T, 0, 0, 1, 1, 1, 1, 0, 0, L, H, U, M); str1[15] = "001111"; K[16] = PaiDing(T, 0, 1, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[16] = "010000"; K[17] = PaiDing(T, 0, 1, 0, 0, 0, 1, 0, 0, L, H, U, M); str1[17] = "010001"; K[18] = PaiDing(T, 0, 1, 0, 0, 1, 0, 0, 0, L, H, U, M); str1[18] = "010010"; K[19] = PaiDing(T, 0, 1, 0, 0, 1, 1, 0, 0, L, H, U, M); str1[19] = "010011"; K[20] = PaiDing(T, 0, 1, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[20] = "010100"; K[21] = PaiDing(T, 0, 1, 0, 1, 0, 1, 0, 0, L, H, U, M); str1[21] = "010101"; K[22] = PaiDing(T, 0, 1, 0, 1, 1, 0, 0, 0, L, H, U, M); str1[22] = "010110"; K[23] = PaiDing(T, 0, 1, 0, 1, 1, 1, 0, 0, L, H, U, M); str1[23] = "010111"; K[24] = PaiDing(T, 0, 1, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[24] = "011000"; K[25] = PaiDing(T, 0, 1, 1, 0, 0, 1, 0, 0, L, H, U, M); str1[25] = "011001"; K[26] = PaiDing(T, 0, 1, 1, 0, 1, 0, 0, 0, L, H, U, M); str1[26] = "011010"; K[27] = PaiDing(T, 0, 1, 1, 0, 1, 1, 0, 0, L, H, U, M); str1[27] = "011011"; K[28] = PaiDing(T, 0, 1, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[28] = "011100"; K[29] = PaiDing(T, 0, 1, 1, 1, 0, 1, 0, 0, L, H, U, M); str1[29] = "011101"; K[30] = PaiDing(T, 0, 1, 1, 1, 1, 0, 0, 0, L, H, U, M); str1[30] = "011110"; K[31] = PaiDing(T, 0, 1, 1, 1, 1, 1, 0, 0, L, H, U, M); str1[31] = "011111"; K[32] = PaiDing(T, 1, 0, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[32] = "100000"; K[33] = PaiDing(T, 1, 0, 0, 0, 0, 1, 0, 0, L, H, U, M); str1[33] = "100001"; K[34] = PaiDing(T, 1, 0, 0, 0, 1, 0, 0, 0, L, H, U, M); str1[34] = "100010"; K[35] = PaiDing(T, 1, 0, 0, 0, 1, 1, 0, 0, L, H, U, M); str1[35] = "100011"; K[36] = PaiDing(T, 1, 0, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[36] = "100100"; K[37] = PaiDing(T, 1, 0, 0, 1, 0, 1, 0, 0, L, H, U, M); str1[37] = "100101"; K[38] = PaiDing(T, 1, 0, 0, 1, 1, 0, 0, 0, L, H, U, M); str1[38] = "100110"; K[39] = PaiDing(T, 1, 0, 0, 1, 1, 1, 0, 0, L, H, U, M); str1[39] = "100111"; K[40] = PaiDing(T, 1, 0, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[40] = "101000"; K[41] = PaiDing(T, 1, 0, 1, 0, 0, 1, 0, 0, L, H, U, M); str1[41] = "101001"; K[42] = PaiDing(T, 1, 0, 1, 0, 1, 0, 0, 0, L, H, U, M); str1[42] = "101010"; K[43] = PaiDing(T, 1, 0, 1, 0, 1, 1, 0, 0, L, H, U, M); str1[43] = "101011"; K[44] = PaiDing(T, 1, 0, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[44] = "101100"; K[45] = PaiDing(T, 1, 0, 1, 1, 0, 1, 0, 0, L, H, U, M); str1[45] = "101101"; K[46] = PaiDing(T, 1, 0, 1, 1, 1, 0, 0, 0, L, H, U, M); str1[46] = "101110"; K[47] = PaiDing(T, 1, 0, 1, 1, 1, 1, 0, 0, L, H, U, M); str1[47] = "101111"; K[48] = PaiDing(T, 1, 1, 0, 0, 0, 0, 0, 0, L, H, U, M); str1[48] = "110000"; K[49] = PaiDing(T, 1, 1, 0, 0, 0, 1, 0, 0, L, H, U, M); str1[49] = "110001"; K[50] = PaiDing(T, 1, 1, 0, 0, 1, 0, 0, 0, L, H, U, M); str1[50] = "110010"; K[51] = PaiDing(T, 1, 1, 0, 0, 1, 1, 0, 0, L, H, U, M); str1[51] = "110011"; K[52] = PaiDing(T, 1, 1, 0, 1, 0, 0, 0, 0, L, H, U, M); str1[52] = "110100"; K[53] = PaiDing(T, 1, 1, 0, 1, 0, 1, 0, 0, L, H, U, M); str1[53] = "110101"; K[54] = PaiDing(T, 1, 1, 0, 1, 1, 0, 0, 0, L, H, U, M); str1[54] = "110110"; K[55] = PaiDing(T, 1, 1, 0, 1, 1, 1, 0, 0, L, H, U, M); str1[55] = "110111"; K[56] = PaiDing(T, 1, 1, 1, 0, 0, 0, 0, 0, L, H, U, M); str1[56] = "111000"; K[57] = PaiDing(T, 1, 1, 1, 0, 0, 1, 0, 0, L, H, U, M); str1[57] = "111001";K[58] = PaiDing(T, 1, 1, 1, 0, 1, 0, 0, 0, L, H, U, M); str1[58] = "111010";K[59] = PaiDing(T, 1, 1, 1, 0, 1, 1, 0, 0, L, H, U, M); str1[59] = "111011";K[60] = PaiDing(T, 1, 1, 1, 1, 0, 0, 0, 0, L, H, U, M); str1[60] = "111100";K[61] = PaiDing(T, 1, 1, 1, 1, 0, 1, 0, 0, L, H, U, M); str1[61] = "111101";K[62] = PaiDing(T, 1, 1, 1, 1, 1, 0, 0, 0, L, H, U, M); str1[62] = "111110";K[63] = PaiDing(T, 1, 1, 1, 1, 1, 1, 0, 0, L, H, U, M); str1[63] = "111111";Z = Min(K);int j = 0;for (int i = 0; i < N; i++){if (K[i] == Z)j = i;}str = str1[j];}return str;}public static int YM(int[,] T, int[] M, int U,int Z, int L,int H)//T为a传ä?入¨?的Ì?矩?阵¨®V为a记?录?所¨´求¨®解a的Ì?值¦ÌM目?标À¨º函¡¥数ºy的Ì?数ºy组Á¨¦//U变À?元a的Ì?个?数ºyZ为a最Á?优®?值¦Ì{if(U==3){int N = 8;int[] K = new int[N];K[0] = PaiDing(T, 0, 0, 0, 0, 0, 0, 0, 0, L, H, U, M);K[1] = PaiDing(T, 0, 0, 1, 0, 0, 0, 0, 0, L, H, U, M);K[2] = PaiDing(T, 0, 1, 0, 0, 0, 0, 0, 0, L, H, U, M);K[3] = PaiDing(T, 0, 1, 1, 0, 0, 0, 0, 0, L, H, U, M);K[4] = PaiDing(T, 1, 0, 0, 0, 0, 0, 0, 0, L, H, U, M);K[5] = PaiDing(T, 1, 0, 1, 0, 0, 0, 0, 0, L, H, U, M);K[6] = PaiDing(T, 1, 1, 0, 0, 0, 0, 0, 0, L, H, U, M);K[7] = PaiDing(T, 1, 1, 1, 0, 0, 0, 0, 0, L, H, U, M);Z = Max(K);}if (U == 4){int N = 16;int[] K = new int[N];K[0] = PaiDing(T, 0, 0, 0, 0, 0, 0, 0, 0, L, H, U, M);K[1] = PaiDing(T, 0, 0, 0, 1, 0, 0, 0, 0, L, H, U, M);K[2] = PaiDing(T, 0, 0, 1, 0, 0, 0, 0, 0, L, H, U, M);K[3] = PaiDing(T, 0, 0, 1, 1, 0, 0, 0, 0, L, H, U, M);K[4] = PaiDing(T, 0, 1, 0, 0, 0, 0, 0, 0, L, H, U, M);K[5] = PaiDing(T, 0, 1, 0, 1, 0, 0, 0, 0, L, H, U, M);K[6] = PaiDing(T, 0, 1, 1, 0, 0, 0, 0, 0, L, H, U, M);K[7] = PaiDing(T, 0, 1, 1, 1, 0, 0, 0, 0, L, H, U, M);K[8] = PaiDing(T, 1, 0, 0, 0, 0, 0, 0, 0, L, H, U, M);K[9] = PaiDing(T, 1, 0, 0, 1, 0, 0, 0, 0, L, H, U, M);K[10] = PaiDing(T, 1, 0, 1, 0, 0, 0, 0, 0, L, H, U, M);K[11] = PaiDing(T, 1, 0, 1, 1, 0, 0, 0, 0, L, H, U, M);K[12] = PaiDing(T, 1, 1, 0, 0, 0, 0, 0, 0, L, H, U, M);K[13] = PaiDing(T, 1, 1, 0, 1, 0, 0, 0, 0, L, H, U, M);K[14] = PaiDing(T, 1, 1, 1, 0, 0, 0, 0, 0, L, H, U, M);K[15] = PaiDing(T, 1, 1, 1, 1, 0, 0, 0, 0, L, H, U, M);Z = Max(K);}。