A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

   【题目描述】几十年前全世界就流行一种数字游戏,至今仍有人乐此不疲.在中国我们把这种游戏称为“算24点”。
  您作为游戏者将得到4个1~9之间的自然数作为操作数,而您的任务是对这4个操作数进行适当的算术运算,要求运算结果等于24。
  您可以使用的运算只有:+,-,*,/,您还可以使用()来改变运算顺序。注意:所有的中间结果须是整数,所以一些除法运算是不允许的(例如,(2*2)/4是合法的,2*(2/4)是 不合法的)。下面我们给出一个游戏的具体例子: 若给出的4个操作数是:1、2、3、7,则一种可能的解答是1+2+3*7=24。


【输入】只有一行,四个1到9之间的自然数。

【输出】如果有解的话,只要输出一个解,输出的是三行数据,分别表示运算的步骤。其中第一行是输入的两个数和一个运算符和运算后的结果,第二行是第一行的结果和一个输入的数据、运算符、运算后的结果;第三行是第二行的结果和输入的一个数、运算符和“=24”。如果两个操作数有大小的话则先输出大的。 如果没有解则输出“No answer!”


【输入样例】1 2 3 7



【输出样例】

2+1=3
7*3=21
21+3=24

3 个回复

倒序浏览
1+1={:soso__14929679738222025475_3:}
回复 使用道具 举报
胡生蒙 发表于 2012-3-31 22:52
1+1=

哥们,什么意思?
回复 使用道具 举报
  1. import java.util.ArrayList;
  2. import java.util.List;

  3. class MathDemo {

  4.         public int Mjia(int a, int b) {
  5.                 return a + b;
  6.         }

  7.         public int Mjian(int a, int b) {
  8.                 return a - b;
  9.         }

  10.         public int Mcheng(int a, int b) {
  11.                 return a * b;
  12.         }

  13.         public int Mchu(int a, int b) {
  14.                 return a / b;
  15.         }
  16. }

  17. public class TTF_24 {
  18.         public static String ttfDemo(List<Integer> numbers) {
  19.                 MathDemo md = new MathDemo();

  20.                 for (int num : numbers) {
  21.                         int[] ynums = new int[4];
  22.                         int weishu = 1000;
  23.                         int len = 0;
  24.                         while (weishu > 0) {
  25.                                 ynums[len] = num / weishu;
  26.                                 num = num % weishu;
  27.                                 weishu = weishu / 10;
  28.                                 len++;

  29.                         }

  30.                         for (int i = 0; i < 4; i++) {
  31.                                 for (int k = 0; k < 4; k++) {
  32.                                         for (int j = 0; j < 4; j++) {
  33.                                                 int a = 0;
  34.                                                 int b = 0;
  35.                                                 int c = 0;
  36.                                                 switch (i) {
  37.                                                 case 0:
  38.                                                         a = md.Mjia(ynums[0], ynums[1]);
  39.                                                         break;
  40.                                                 case 1:
  41.                                                         a = md.Mjian(ynums[0], ynums[1]);
  42.                                                         break;
  43.                                                 case 2:
  44.                                                         a = md.Mcheng(ynums[0], ynums[1]);
  45.                                                         break;
  46.                                                 case 3:
  47.                                                         a = md.Mchu(ynums[0], ynums[1]);
  48.                                                         break;
  49.                                                 }
  50.                                                 switch (k) {
  51.                                                 case 0:
  52.                                                         b = md.Mjia(a, ynums[2]);
  53.                                                         break;
  54.                                                 case 1:
  55.                                                         b = md.Mjian(a, ynums[2]);
  56.                                                         break;
  57.                                                 case 2:
  58.                                                         b = md.Mcheng(a, ynums[2]);
  59.                                                         break;
  60.                                                 case 3:
  61.                                                         b = md.Mchu(a, ynums[2]);
  62.                                                         break;
  63.                                                 }
  64.                                                 switch (j) {
  65.                                                 case 0:
  66.                                                         c = md.Mjia(b, ynums[3]);
  67.                                                         break;
  68.                                                 case 1:
  69.                                                         c = md.Mjian(b, ynums[3]);
  70.                                                         break;
  71.                                                 case 2:
  72.                                                         c = md.Mcheng(b, ynums[3]);
  73.                                                         break;
  74.                                                 case 3:
  75.                                                         c = md.Mchu(b, ynums[3]);
  76.                                                         break;
  77.                                                 }
  78.                                                 if (c == 24) {
  79.                                                         String f1 = "";
  80.                                                         String f2 = "";
  81.                                                         String f3 = "";
  82.                                                         switch (i) {
  83.                                                         case 0:
  84.                                                                 f1 = "+";
  85.                                                                 break;
  86.                                                         case 1:
  87.                                                                 f1 = "-";
  88.                                                                 break;
  89.                                                         case 2:
  90.                                                                 f1 = "*";
  91.                                                                 break;
  92.                                                         case 3:
  93.                                                                 f1 = "/";
  94.                                                                 break;
  95.                                                         }
  96.                                                         switch (k) {
  97.                                                         case 0:
  98.                                                                 f2 = "+";
  99.                                                                 break;
  100.                                                         case 1:
  101.                                                                 f2 = "-";
  102.                                                                 break;
  103.                                                         case 2:
  104.                                                                 f2 = "*";
  105.                                                                 break;
  106.                                                         case 3:
  107.                                                                 f2 = "/";
  108.                                                                 break;
  109.                                                         }
  110.                                                         switch (j) {
  111.                                                         case 0:
  112.                                                                 f3 = "+";
  113.                                                                 break;
  114.                                                         case 1:
  115.                                                                 f3 = "-";
  116.                                                                 break;
  117.                                                         case 2:
  118.                                                                 f3 = "*";
  119.                                                                 break;
  120.                                                         case 3:
  121.                                                                 f3 = "/";
  122.                                                                 break;
  123.                                                         }

  124.                                                         return "(((" + ynums[0] + f1 + ynums[1] + ")" + f2
  125.                                                                         + ynums[2] + ")" + f3 + ynums[3] + "=24";

  126.                                                 }
  127.                                         }
  128.                                 }
  129.                         }

  130.                 }

  131.                 return "No answer!";
  132.         }

  133.         public static Integer newNum(int nums, int num) throws Exception {

  134.                 int[] ynums = new int[4];
  135.                 int[] hnums = new int[4];
  136.                 int[] nnumber = new int[4];
  137.                 int weishu = 1000;
  138.                 int len = 0;
  139.                 while (weishu > 0) {
  140.                         ynums[len] = num / weishu;
  141.                         num = num % weishu;
  142.                         weishu = weishu / 10;
  143.                         len++;
  144.                 }
  145.                 int weishu1 = 1000;
  146.                 int len1 = 0;
  147.                 while (weishu1 > 0) {
  148.                         hnums[len1] = nums / weishu1;
  149.                         nums = nums % weishu1;
  150.                         weishu1 = weishu1 / 10;
  151.                         len1++;
  152.                 }
  153.                 int len2 = 0;
  154.                 for (int wei : ynums) {

  155.                         nnumber[len2] = hnums[wei - 1];
  156.                         len2++;
  157.                 }
  158.                 return nnumber[0] * 1000 + nnumber[1] * 100 + nnumber[2] * 10
  159.                                 + nnumber[3];

  160.         }

  161.         public static List<Integer> arrayNum(int nums) throws Exception {
  162.                 List<Integer> arrayNumber = new ArrayList<Integer>();
  163.                 int[] xulie = new int[] { 1234, 1243, 1324, 1342, 1423, 1432, 2134,
  164.                                 2143, 2314, 2341, 2413, 2431, 3124, 3142, 3214, 3241, 3412,
  165.                                 3421, 4123, 4132, 4213, 4231, 4312, 4321 };
  166.                 for (int i : xulie) {
  167.                         arrayNumber.add(newNum(nums, i));
  168.                 }
  169.                 return arrayNumber;
  170.         }

  171.         public static void main(String[] args) throws Exception {

  172.                 int[] num = new int[4];

  173.                 int nums = Integer.parseInt(javax.swing.JOptionPane
  174.                                 .showInputDialog("请输入四个1-9的整数"));
  175.                 System.out.println(ttfDemo(arrayNum(nums)));
  176.         }
  177. }
复制代码
输入:1259
结果:(((1+2)*5)+9=24

写的有点粗糙对付着看吧!~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马