zoukankan      html  css  js  c++  java
  • 1.16 24点游戏

    问题:

    输入:4个数字

    输出:结果为24的表达式


    解法一:

    穷举法

    #include<stdio.h>
    char mark[4]={'+','-','*','/'};
    float cal(float x,float y,int mark)
    {
      switch(mark)
      {
        case 0:return x+y;
        case 1:return x-y;
        case 2:return x*y;
        case 3:return x/y;
      }
    }
    float calculate_A(float a,float b,float c,float d,int mark1,int mark2,int mark3)
    {
      float r1,r2,r3;
      r1=cal(a,b,mark1);
      r2=cal(r1,c,mark2);
      r3=cal(r2,d,mark3);
      return r3;
    }
    float calculate_B(float a,float b,float c,float d,int mark1,int mark2,int mark3)
    {
      float r1,r2,r3;
      r1=cal(b,c,mark2);
      r2=cal(a,r1,mark1);
      r3=cal(r2,d,mark3);
      return r3;
    }
    float calculate_C(float a,float b,float c,float d,int mark1,int mark2,int mark3)
    {
      float r1,r2,r3;
      r1=cal(c,d,mark3);
      r2=cal(b,r1,mark2);
      r3=cal(a,r2,mark1);
      return r3;
    }
    float calculate_D(float a,float b,float c,float d,int mark1,int mark2,int mark3)
    {
      float r1,r2,r3;
      r1=cal(b,c,mark2);
      r2=cal(r1,d,mark3);
      r3=cal(a,r2,mark1);
      return r3;
    }
    float calculate_E(float a,float b,float c,float d,int mark1,int mark2,int mark3)
    {
      float r1,r2,r3;
      r1=cal(a,b,mark1);
      r2=cal(c,d,mark3);
      r3=cal(r1,r2,mark2);
      return r3;
    }
    float get(int a,int b,int c,int d)
    {
      int mark1,mark2,mark3;
      float flag=0;
      for(mark1=0;mark1<4;mark1++)
      {
        for(mark2=0;mark2<4;mark2++)
        {
          for(mark3=0;mark3<4;mark3++)
          {
            if(calculate_A(a,b,c,d,mark1,mark2,mark3)==24)
            {
              printf("((%d%c%d)%c%d)%c%d=24
    ",a,mark[mark1],b,mark[mark2],c,mark[mark3],d);
              flag=1;
            }
            if(calculate_B(a,b,c,d,mark1,mark2,mark3)==24)
            {
              printf("(%d%c(%d%c%d))%c%d=24
    ",a,mark[mark1],b,mark[mark2],c,mark[mark3],d);
              flag=1;
            }
            if(calculate_C(a,b,c,d,mark1,mark2,mark3)==24)
            {
              printf("%d%c(%d%c(%d%c%d))=24
    ",a,mark[mark1],b,mark[mark2],c,mark[mark3],d);
              flag=1;
            }
            if(calculate_D(a,b,c,d,mark1,mark2,mark3)==24)
            {
              printf("%d%c((%d%c%d)%c%d)=24
    ",a,mark[mark1],b,mark[mark2],c,mark[mark3],d);
              flag=1;
            }
            if(calculate_E(a,b,c,d,mark1,mark2,mark3)==24)
            {
              printf("(%d%c%d)%c(%d%c%d)=24
    ",a,mark[mark1],b,mark[mark2],c,mark[mark3],d);
              flag=1;
            }
          }
        }
      }
      return flag;
    }
    main()
    {
      int a,b,c,d;
      printf("Please input 4 numbers(1~13):");
      scanf("%d%d%d%d",&a,&b,&c,&d);
        if((a>=1&&a<=13)&&(b>=1&&b<=13)&&(c>=1&&c<=13)&&(d>=1&&d<=13))
        {
          get(a,b,c,d);
        }
          else
          {
            printf("Input illege,please input again(1~13)");
          }
      system("pause");
    }
    


    未完待续。。。


  • 相关阅读:
    [转].net批量导入数据
    IIS6 应用程序池配置详解附建议设置
    [转]SQLServer死锁问题
    VSS 版本管理
    非功能性需求介绍[转]
    javascript获取网页中HTML元素
    [转]如何做一流的研究
    多web并发测试问题解决
    jQuery 页面校验
    SqlServer排序规则错误致使不能查询
  • 原文地址:https://www.cnblogs.com/pangblog/p/3324918.html
Copyright © 2011-2022 走看看