当前位置:   article > 正文

试题 算法训练 24点 蓝桥杯 Java_算法训练 传球游戏 时间限制:1.0s 内存限制:256.0mb   【问题描述】   上体育

算法训练 传球游戏 时间限制:1.0s 内存限制:256.0mb   【问题描述】   上体育

资源限制

时间限制:1.0s   内存限制:256.0MB

问题描述

  24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加、减、乘、除以及括号想办法得到24,例如:
  ((A*K)-J)*Q等价于((1*13)-11)*12=24
  加减乘不用多说了,但除法必须满足能整除才能除!这样有一些是得不到24点的,所以这里只要求求出不超过24的最大值。

输入格式

  输入第一行N(1<=N<=5)表示有N组测试数据。每组测试数据输入4行,每行一个整数(1到13)表示牌值。

输出格式

  每组测试数据输出一个整数,表示所能得到的最大的不超过24的值。

样例输入

3
3
3
3
3
1
1
1
1
12
5
13
1

样例输出

24
4
21

  1. import java.util.Scanner;
  2. public class Main {
  3. static char[]fuhao= {'-','*','+','/'};
  4. public static void main(String[] args) {
  5. // TODO 自动生成的方法存根
  6. Scanner s=new Scanner(System.in);
  7. int n=s.nextInt();
  8. int []shujv=new int[4*n];
  9. for(int i=0;i<4*n;i++)
  10. shujv[i]=s.nextInt();
  11. int zuhe[]=new int[4];
  12. for(int i=0;i<n;i++) {
  13. zuhe[0]=shujv[i*4+0];zuhe[1]=shujv[i*4+1];
  14. zuhe[2]=shujv[i*4+2];zuhe[3]=shujv[i*4+3];
  15. z(zuhe);
  16. }
  17. }
  18. public static void z(int []zuhe) {
  19. int jieg=0;
  20. for(int i=0;i<4;i++) {
  21. for(int j=0;j<4;j++) {
  22. if(j==i)
  23. continue;
  24. for(int k=0;k<4;k++) {
  25. if(k==i||k==j)
  26. continue;
  27. for(int o=0;o<4;o++) {
  28. if(o==i||o==j||o==k)
  29. continue;
  30. int new_zuhe[]=new int[4];
  31. new_zuhe[0]=zuhe[i];new_zuhe[1]=zuhe[j];
  32. new_zuhe[2]=zuhe[k];new_zuhe[3]=zuhe[o];
  33. for(int ii=0;ii<4;ii++) {
  34. for(int jj=0;jj<4;jj++) {
  35. for(int kk=0;kk<4;kk++) {
  36. int gg=jisuan(jisuan(new_zuhe[0], new_zuhe[1], fuhao[ii]), jisuan(new_zuhe[2], new_zuhe[3], fuhao[kk]), fuhao[jj]);
  37. int g=jisuan(jisuan(jisuan(new_zuhe[0], new_zuhe[1], fuhao[ii]),new_zuhe[2],fuhao[jj]),new_zuhe[3],fuhao[kk]);
  38. if(g==24||gg==24) {
  39. System.out.println(24);
  40. return;
  41. }
  42. if(g>24&&gg>24)
  43. continue;
  44. if(g<0)
  45. g=-g;
  46. if(gg<0)
  47. gg=-gg;
  48. if(g<24) {
  49. if(g>jieg)
  50. jieg=g;
  51. }
  52. if(gg<24){
  53. if(gg>jieg)
  54. jieg=gg;
  55. }
  56. }
  57. }
  58. }
  59. }
  60. }
  61. }
  62. }
  63. System.out.println(jieg);
  64. }
  65. public static int jisuan(int a,int b,char c) {
  66. if(b==0)
  67. return 999999;
  68. if(c=='*')
  69. return a*b;
  70. if(c=='+')
  71. return a+b;
  72. if(c=='-')
  73. return a-b;
  74. else {
  75. if(a%b!=0)
  76. return 999999;
  77. else
  78. return a/b;
  79. }
  80. }
  81. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/64326
推荐阅读
相关标签
  

闽ICP备14008679号