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");
    }
    


    未完待续。。。


  • 相关阅读:
    转自MicrosoftDDOS处理参考如何:强化 TCP/IP 堆栈安全
    [原创]x.509证书在WCF中的应用(CS篇)
    ExtJs学习笔记(17)_table布局
    Javascript生成GUID
    ExtJs学习笔记(18)_ExtJs嵌入FCK示例
    ExtJs学习笔记(12)_Anchor布局
    再谈web.config/app.config敏感数据加/解密的二种方法
    [转自雨痕]LINQ to SQL Delay Loaded
    ExtJs学习笔记(1)_Hello World!
    aspx超时问题容易忽略的细节
  • 原文地址:https://www.cnblogs.com/pangblog/p/3324918.html
Copyright © 2011-2022 走看看