zoukankan      html  css  js  c++  java
  • 算24点,给出四个数字,算出所有组合

    网上看到的一个题,在某个网页上发现了关于这个题目的应用,是用js写的,分享下源代码(稍作了修改):

     1 function tdisoper(f0,f1,f2,f3)
     2 {
     3 this[0]=f0;
     4 this[1]=f1;
     5 this[2]=f2;
     6 this[3]=f3;
     7 }
     8 disoper=new tdisoper("-","+","/","*");
     9 function oper(f,m,n)
    10 {
    11 if (f==3) return(m*n);
    12 if (f==2) return(m/n);
    13 if (f==1) return(parseFloat(m)+parseFloat(n));
    14 if (f==0) return(m-n);
    15 }
    16 function tb(i1,i2,i4,i8)
    17 {
    18 this[1]=i1;
    19 this[2]=i2;
    20 this[4]=i4;
    21 this[8]=i8;
    22 }
    23 function get24(n1,n2,n3,n4)
    24 {
    25 var result="";
    26 b=new tb(n1,n2,n3,n4);
    27 k=0;
    28 for (i1=1;i1<=8;i1*=2)
    29  for (i2=1;i2<=8;i2*=2)
    30    for (i3=1;i3<=8;i3*=2)
    31      for (i4=1;i4<=8;i4*=2)
    32        {
    33         if ((i1|i2|i3|i4)!=0xf) continue;
    34           for (f1=0;f1<=3;f1++)
    35             for (f2=0;f2<=3;f2++)
    36               for (f3=0;f3<=3;f3++)
    37                   {
    38 m=oper(f3,oper(f2,oper(f1,b[i1],b[i2]) ,b[i3] ) ,b[i4]);
    39   if (Math.abs(m-24)<1e-5 ) {
    40      result+=(("+b[i1]+disoper[f1]+b[i2]+")"+disoper[f2]+b[i3]+")"+disoper[f3]+b[i4]+"\n";
    41 }
    42 m=oper(f1, b[i1], oper(f3, oper(f2,b[i2],b[i3]) ,b[i4]) );
    43   if (Math.abs(m-24)<1e-5){
    44   result=result+b[i1]+disoper[f1]+"(("+b[i2]+disoper[f2]+b[i3]+")"+disoper[f3]+b[i4]+")\n";
    45 }
    46 m=oper(f3,oper(f1,b[i1], oper(f2,b[i2],b[i3]) ),b[i4]);
    47  if (Math.abs(m-24)<1e-5){
    48   result=result+"("+b[i1]+disoper[f1]+"("+b[i2]+disoper[f2]+b[i3]+"))"+disoper[f3]+b[i4]+"\n";
    49 }
    50 m=oper(f1, b[i1], oper(f2, b[i2], oper(f3, b[i3], b[i4]) ) );
    51  if (Math.abs(m-24)<1e-5){
    52   result=result+b[i1]+disoper[f1]+"("+b[i2]+disoper[f2]+"("+b[i3]+disoper[f3]+b[i4]+"))\n";
    53 }
    54 m=oper(f2,oper(f1,b[i1],b[i2]), oper(f3,b[i3],b[i4]) );
    55   if (Math.abs(m-24)<1e-5){
    56   result=result+"("+b[i1]+disoper[f1]+b[i2]+")"+disoper[f2]+"("+b[i3]+disoper[f3]+b[i4]+")\n";
    57 }
    58 
    59            }
    60       }
    61 alert(result);
    62 return(false);
    63 }
  • 相关阅读:
    一些java的基础知识
    android基础AlertDialog使用
    Js+XML 操作 [ZT]
    [ASP.NET2.0] asp.net在ie7中使用FileUpload上传前预览图片 [ZT]
    C#对图片的几种简单处理 [ZT]
    使用 Bulk Copy 将大量数据复制到数据库 [ZT]
    html中name和id的区别 [ZT]
    两个分页存储过程
    C#常用的文件操作 (转)
    JSON
  • 原文地址:https://www.cnblogs.com/xsauce/p/3111551.html
Copyright © 2011-2022 走看看