24点求解
搜索24点的组合方案:
(2*(2+2))*3=24
(2+2)*(2+4)=24
2*(2+(2*5))=24
2*((2+2)+8)=24
2+(2*(2+9))=24
2+(2+(2*10))=24
(2+2)*(3+3)=24
2*((2*3)+6)=24
2*((2+3)+7)=24
2+(2*(3+8))=24
((2+2)+4)*3=24
2*((2*4)+4)=24
2+(2+(4*5))=24
2*((2+4)+6)=24
2+(2*(4+7))=24
(2*(2*4))+8=24
2*((2+5)+5)=24
2+(2*(5+6))=24
(2*(2+5))+10=24
(2*(2+6))+8=24
(2+(2*6))+10=24
2*((2*7)-2)=24
(2*(2+7))+6=24
(2+(2*7))+8=24
(2*(2*8))-8=24
(2+2)*(9-3)=24
(2+(2*9))+4=24
2*((2*9)-6)=24
(2+2)*(10-4)=24
2*((2*10)-8)=24
(2+(2+10))+10=24
((2+3)+3)*3=24
2*((3+3)+6)=24
((2*3)-3)*8=24
((2+3)*3)+9=24
((2+3)*4)+4=24
2*((3+4)+5)=24
(2+(3*4))+10=24
2*((3*5)-3)=24
(2*(3*5))-6=24
(2+(3*5))+7=24
(2*(3+5))+8=24
(2+(3*6))+4=24
(2*(3+6))+6=24
2*(3*(7-3))=24
(2*(3+7))+4=24
2*((3*7)-9)=24
2*(3*(8-4))=24
(2*3)+(8+10)=24
(2+(3*9))-5=24
(2*3)+(9+9)=24
(2+(3+9))+10=24
(2*(3+10))-2=24
2*(3*(10-6))=24
2*((4+4)+4)=24
(2+(4*4))+6=24
(2*(4+4))+8=24
(2*(4+5))+6=24
2*((4*5)-8)=24
(2*4)+(6+10)=24
2*(4*(7-4))=24
(2+(4*7))-6=24
(2*4)+(7+9)=24
(2*4)+(8+8)=24
(2+(4+8))+10=24
((2*4)*9)/3=24
(2+4)*(9-5)=24
2*(4*(9-6))=24
(2+(4+9))+9=24
(2*(4+10))-4=24
2*(4*(10-7))=24
((2*5)-2)*3=24
(2*5)+(2*7)=24
2*((5-2)+9)=24
2*((5-3)+10)=24
((2*5)-4)*4=24
(2*5)+(4+10)=24
(2+(5*5))-3=24
(2*(5+5))+4=24
(2+(5/5))*8=24
(2*5)+(5+9)=24
((2*5)-6)*6=24
(2*5)+(6+8)=24
(2*5)+(7+7)=24
((2*5)-7)*8=24
(2+(5+7))+10=24
(2*(5+8))-2=24
(2+(5+8))+9=24
(2*(5+10))-6=24
(2*6)+(2*6)=24
(2*6)+(3+9)=24
((2+6)-4)*6=24
(2*6)+(4+8)=24
(2*6)+(5+7)=24
(2*6)+(6+6)=24
(2+(6/6))*8=24
(2+(6+6))+10=24
(2+(6+7))+9=24
(2+(6+8))+8=24
(2*(6+9))-6=24
((2*6)-9)*8=24
(2+6)*(10-7)=24
(2*(6+10))-8=24
2*((7-2)+7)=24
(2*7)+(3+7)=24
2*((7-3)+8)=24
(2*7)+(5+5)=24
((2*7)-6)*3=24
((2+7)-6)*8=24
(2*(7+7))-4=24
(2+(7+7))+8=24
((2*7)-8)*4=24
(2*(7+9))-8=24
2*(7+(10/2))=24
(2+(7*10))/3=24
(2*(7+10))-10=24
((2+8)*3)-6=24
((2+8)-7)*8=24
((2*8)-8)*3=24
(2*(8+8))-8=24
(2*(8+9))-10=24
((2*9)-2)+8=24
(2*(9-2))+10=24
((2*9)-4)+10=24
2*((9-6)+9)=24
2*((9-7)+10)=24
((2+9)-8)*8=24
(2+(9/9))*8=24
(2*(10-3))+10=24
((2*10)-5)+9=24
2*((10/5)+10)=24
((2*10)-6)+10=24
2*((10-8)+10)=24
(3*(3*3))-3=24
3+(3*(3+4))=24
(3*3)+(3*5)=24
(3*(3+3))+6=24
3*((3/3)+7)=24
((3+3)-3)*8=24
3*((3*4)-4)=24
(3/3)*(4*6)=24
(3+(3*4))+9=24
((3/3)+5)*4=24
(3+(3*5))+6=24
3*((3*5)-7)=24
(3*3)+(5+10)=24
((3*3)-6)*8=24
(3*3)+(6+9)=24
3*((3*6)-10)=24
(3*(3+7))-6=24
(3*3)+(7+8)=24
(3+3)*(8-4)=24
(3*(3+8))-9=24
(3+(3+8))+10=24
(3+3)*(9-5)=24
(3+(3+9))+9=24
3*(3+(10/2))=24
3+(3*(10-3))=24
(3+(3*10))-9=24
3*((4-3)+7)=24
((3+4)*4)-4=24
(3+(4*4))+5=24
(3+(4/4))*6=24
3*((4/4)+7)=24
(3*4)+(4+8)=24
(3*4)+(5+7)=24
(3*4)+(6+6)=24
(3+(4*7))-7=24
(3*(4+7))-9=24
(3+(4+7))+10=24
3*(4*(8-6))=24
(3+(4+8))+9=24
3*((4+9)-5)=24
((3*4)*10)/5=24
3*((4+10)-6)=24
3*(4*(10-8))=24
(3*5)+(4+5)=24
((3+5)-4)*6=24
((3+5)*4)-8=24
(3*(5+5))-6=24
3*((5/5)+7)=24
((3+5)-5)*8=24
(3+(5*6))-9=24
(3+(5+6))+10=24
(3+(5+7))+9=24
(3+(5+8))+8=24
3*((5+10)-7)=24
3*((6/3)+6)=24
((3+6)-5)*6=24
3*((6-5)+7)=24
(3*(6-5))*8=24
(3+(6/6))*6=24
3*((6/6)+7)=24
((3+6)-6)*8=24
(3+(6+6))+9=24
(3+(6+7))+8=24
3*((6+9)-7)=24
3*((6+10)-8)=24
((3*7)-5)+8=24
3*((7-6)+7)=24
(3+(7+7))+7=24
((3+7)-7)*8=24
((3*7)-7)+10=24
3*(7+(8/8))=24
3+((7*9)/3)=24
3*((7+9)-8)=24
3*(7+(9/9))=24
3*((7+10)-9)=24
3*(7+(10/10))=24
(3+(8/8))*6=24
((3*8)+8)-8=24
3*(8*(9-8))=24
((3*8)+9)-9=24
3*(8*(10-9))=24
((3*8)+10)-10=24
3*(9-(3/3))=24
3*(9-(4/4))=24
(3*(9-4))+9=24
3*(9-(5/5))=24
((3*9)+5)-8=24
(3+9)*(6-4)=24
((3*9)+6)-9=24
3*(9-(7/7))=24
(3+9)*(8-6)=24
3*(9-(9/9))=24
3*((9+9)-10)=24
((3+9)*10)/5=24
3*(9-(10/10))=24
((3*10)+4)-10=24
((3+10)-9)*6=24
3*(10-(10/5))=24
(3+(10/10))*6=24
(4-2)*(5+7)=24
(4+(4*4))+4=24
4*((4/4)+5)=24
((4+4)-4)*6=24
(4*(4+4))-8=24
4*((4*4)-10)=24
((4+4)-5)*8=24
(4+(4+6))+10=24
(4+4)*(7-4)=24
4*((4+7)-5)=24
(4+(4*7))-8=24
(4+(4+7))+9=24
4*((4+8)-6)=24
(4+(4+8))+8=24
4+(4*(9-4))=24
(4+4)*(9-6)=24
4+(4*(10-5))=24
(4+4)*(10-7)=24
4*((4+10)-8)=24
4*((5-4)+5)=24
(4*(5-4))*6=24
4*((5/5)+5)=24
((4+5)-5)*6=24
(4-(5/5))*8=24
((4*5)-5)+9=24
(4+(5+5))+10=24
4*(5+(6/6))=24
((4+5)-6)*8=24
(4+(5+6))+9=24
(4+(5*6))-10=24
4*((5+7)-6)=24
4*(5+(7/7))=24
(4+(5+7))+8=24
4*(5+(8/8))=24
4*((5+9)-8)=24
4*(5+(9/9))=24
4*((5+10)-9)=24
4*(5+(10/10))=24
((4*6)+6)-6=24
(4+(6+6))+8=24
4*(6*(7-6))=24
(4+(6+7))+7=24
((4+6)-7)*8=24
((4*6)+8)-8=24
4*(6*(9-8))=24
((4*6)+9)-9=24
4*(6*(10-9))=24
((4*6)+10)-10=24
(4*(7-3))+8=24
4*(7-(5/5))=24
((4*7)+5)-9=24
4+((7-5)*10)=24
((4*7)+6)-10=24
4*(7-(7/7))=24
4*((7+7)-8)=24
((4+7)-8)*8=24
4*((7+8)-9)=24
4*(7-(9/9))=24
4*((7+9)-10)=24
4*(7-(10/10))=24
4+((8-6)*10)=24
(4-(8/8))*8=24
4*((8+8)-10)=24
((4+8)-9)*8=24
((4+8)*10)/5=24
(4*(9-2))-4=24
(4*9)-(4+8)=24
(4*9)-(6+6)=24
(4-(9/9))*8=24
((4+9)-10)*8=24
(4*(10-3))-4=24
4+((10-8)*10)=24
(5*5)-(3/3)=24
(5*5)-(5/5)=24
((5*5)+5)-6=24
(5+(5+5))+9=24
((5+5)-6)*6=24
((5*5)+6)-7=24
(5+(5+6))+8=24
(5+(5+7))+7=24
((5*5)+7)-8=24
(5*5)-(8/8)=24
((5*5)+8)-9=24
(5*5)-(9/9)=24
((5*5)+9)-10=24
(5*5)-(10/10)=24
(5*(6/2))+9=24
(5-(6/6))*6=24
(5+(6+6))+7=24
((5+6)-8)*8=24
((5*6)*8)/10=24
(5*7)-(2+9)=24
(5-(7/7))*6=24
(5+7)*(8-6)=24
(5+7)*(9-7)=24
((5+7)-9)*8=24
((5+7)*10)/5=24
(5+7)*(10-8)=24
(5*8)-(2*8)=24
(5*8)-(8+8)=24
((5+8)-9)*6=24
((5+8)-10)*8=24
(5*(9/3))+9=24
(5*(9-6))+9=24
((5+9)-10)*6=24
(5-(10/5))*8=24
(5*(10-7))+9=24
(5-(10/10))*6=24
((6/3)*7)+10=24
((6-3)*10)-6=24
(6+(6+6))+6=24
6*((6+6)-8)=24
((6*6)*6)/9=24
(6+(6*7))/2=24
6*((6+7)-9)=24
6+(6*(8-5))=24
6*((6+8)-10)=24
((6+6)-9)*8=24
(6*(6+10))/4=24
((6+6)*10)/5=24
6+(6*(10-7))=24
6+((7-5)*9)=24
6*((7+7)-10)=24
(6*7)-(8+10)=24
(6*(7+9))/4=24
(6*7)-(9+9)=24
(6/(8-6))*8=24
6*(8/(9-7))=24
6*(8/(10-8))=24
(6*9)-(5*6)=24
6*(9-(10/2))=24
6+(9*(10-8))=24
(6*10)-(6*6)=24
((6+10)*9)/6=24
((7-5)*7)+10=24
((7-5)*8)+8=24
(7*(8/4))+10=24
(7*(9-7))+10=24
(7*(10/5))+10=24
(7*(10-8))+10=24
(8-2)+(8+10)=24
(8/2)*(9-3)=24
(8-5)*(10-2)=24
((8-6)*8)+8=24
((8+8)*9)/6=24
8+(8*(9-7))=24
8+(8*(10-8))=24
8*(9-(2+4))=24
(8*(9-5))-8=24
8*(9/(9-6))=24
8*(9/(10-7))=24
(8*10)-(7*8)=24
((8*10)-8)/3=24
(9-4)+(9+10)=24
(9-5)+(10+10)=24
9+((9*10)/6)=24
(9+(10/2))+10=24
(10-6)+(10+10)=24
((10-7)*10)-6=24
((10*10)-4)/4=24
在109768种组合中找到392种方案。
要求满足公式:a ? b? c ? d =24
其中, abcd取自扑克2~10,?取自+-*/, 可随意添加括号改变运算顺序和结合方式。
以上是我计算的结果,不知道对不对,百度不到答案。
贴代码:
1 static void 枚举24点计算游戏() 2 { 3 //a ? b ? c ? d = 24 4 //a,b,c,d 取自扑克(1~13,每个数字有4个相同的牌) 5 //? 取自+-*/ 6 //中间结果须为自然数。 7 //结合方式:1,2,3 8 //((a?b)?c)?d 1,2,3 9 //(a?b)?(c?d) 1,3,2 10 //(a?(b?c))?d 2,1,3 11 //a?((b?c)?d) 2,3,1 12 //(a?b)?(c?d) 3,1,2 == 1,3,2 13 //a?(b?(c?d)) 3,2,1 14 Func<int,int,int>[] op = new Func<int,int,int>[4]; 15 op[0] = (x,y)=>x+y; 16 op[1] = (x,y)=>x-y>0?x-y:-9999; 17 op[2] = (x,y)=>x*y; 18 op[3] = (x,y)=>y!=0&&x%y==0?x/y:-9999; 19 string[] opString = new string[]{"+","-","*","/"}; 20 bool[] set = new bool[11 * 11 * 11 * 11]; 21 int count=0; 22 int countN = 0; 23 Console.WriteLine("搜索24点的组合方案:"); 24 for(int a =2; a<11; a++) 25 for (int b = 2; b < 11; b++) 26 for (int c = 2; c < 11; c++) 27 28 for (int d = 2; d < 11; d++) 29 { 30 next: 31 if (d > 10) continue; 32 for (int k = 0; k < 4; k++) 33 for (int i = 0; i < 4; i++) 34 for (int j = 0; j < 4; j++) 35 { 36 countN++; 37 List<int> sor = new List<int>(); 38 sor.Add(a); 39 sor.Add(b); 40 sor.Add(c); 41 sor.Add(d); 42 sor.Sort(); 43 int magicNumber = sor[0] * 1000 + sor[1] * 100 + sor[2] * 10 + sor[3]; 44 if (set[magicNumber]) 45 { 46 d++; 47 goto next; 48 } 49 //(a?(b?c))?d 2,1,3 50 if (op[k](op[i](a, op[j](b, c)), d) == 24) 51 { 52 count++; 53 Console.WriteLine("({0}{1}({2}{3}{4})){5}{6}=24", 54 a, opString[i], b, opString[j], c, opString[k], d); 55 set[magicNumber] = true; 56 d++; 57 goto next; 58 } 59 //a?((b?c)?d) 2,3,1 60 if (op[i](a, op[k](op[j](b, c), d)) == 24) 61 { 62 count++; 63 Console.WriteLine("{0}{1}(({2}{3}{4}){5}{6})=24", 64 a, opString[i], b, opString[j], c, opString[k], d); 65 set[magicNumber] = true; 66 d++; 67 goto next; 68 } 69 //a?(b?(c?d)) 3,2,1 70 if (op[i](a, op[j](b, op[k](c, d))) == 24) 71 { 72 count++; 73 Console.WriteLine("{0}{1}({2}{3}({4}{5}{6}))=24", 74 a, opString[i], b, opString[j], c, opString[k], d); 75 set[magicNumber] = true; 76 d++; 77 goto next; 78 } 79 //(a?b)?(c?d) 3,1,2 == 1,3,2 80 if (op[i](op[j](a, b), op[k](c, d)) == 24) 81 { 82 count++; 83 Console.WriteLine("({0}{1}{2}){3}({4}{5}{6})=24", 84 a, opString[j], b, 85 opString[i], 86 c, opString[k], d); 87 set[magicNumber] = true; 88 d++; 89 goto next; 90 } 91 //((a?b)?c)?d 1,2,3 92 if (op[i](op[k](op[j](a, b), c), d) == 24) 93 { 94 count++; 95 Console.WriteLine("(({0}{1}{2}){3}{4}){5}{6}=24", 96 a, opString[j], b, 97 opString[k], 98 c, opString[i], d); 99 set[magicNumber] = true; 100 d++; 101 goto next; 102 } 103 104 } 105 } 106 Console.WriteLine("在{0}种组合中找到{1}种方案。",countN, count); 107 }