【穷举】5 5 5 5 5=5填入操作符

原创 2013年12月05日 13:03:06

填入合适的操作符使得 5 5 5 5 5=5

可以填入+ - * / 不能添加括号。


代码如下

#include <stdio.h>
#include <stdlib.h>

int main(){
    
    char oper[]={' ','+','-','*','/'};
    int i[5];
    int sign=1,j,count=0;
    
    int num[]={0,5,5,5,5,5};//num从下标为1的开始用,0只是用来占位置。 
    
    int result=5;
    float left=0,right;
    
    for(i[1]=1;i[1]<=4;i[1]++){ 
            if(i[1]<4||num[2]!=0)          
            { for(i[2]=1;i[2]<=4;i[2]++)
              {
                  if(i[2]<4||num[3]!=0)
                  {                
                      for(i[3]=1;i[3]<=4;i[3]++)
                      {
                       if(i[3]<4||num[4]!=0)
                        {                  
                          for(i[4]=1;i[4]<=4;i[4]++)
                          {
                                 if(i[4]<4||num[5]!=0)
                                 {
                                  left=0;
                                  right=num[1];
                                  sign=1;
                                  
                                  for(j=1;j<=4;j++){
                                          
                                          switch(oper[i[j]]){
                                               case '+':
                                                    left=left+sign*right;
                                                    sign=1;
                                                    right=num[j+1];
                                                    break;
                                               case '-':
                                                    left=left+sign*right;
                                                    sign=-1;
                                                    right=num[j+1];
                                                    break;
                                               case '*':
                                                    right=right*num[j+1];
                                                    break;
                                               case '/':
                                                    right=right/num[j+1];
                                                    break;
                                                        
                                                        
                                                             
                                                             
                                                  }
                                          
                                        }
                                        
                                        if(left+sign*right==result){
                                          count++;
                                          printf("%3d:  ",count);
                                           for(j=1;j<=4;j++)
                                           printf("%d%c",num[j],oper[i[j]]);
                                           
                                           printf("%d=%d\n",num[5],result);
                                                          
                                                          
                                                          
                                                                    
                                                                    }
                                                       
                                 
                                 }
                          }
                        }
                       }
                  }  
                  }
                  }
                       
  }    
  
         if(count==0){
                printf("没有合适的解法");
                }
    
    
    
    system("pause");
    return 0;
    
    
    }


相关文章推荐

1 2 3 4 5 6 7 8 9 = 110,在数字间填入加号或者减号(可以不填,但不能填入其它符号)使等式成立。

一共有3^8种可能。 答案: 成功:12+34+56+7-8+9 = 110 成功:12+3+45+67-8-9 = 110 成功:12-3+4-5+6+7+89 = 110 成功:1+2+...

c++课件(5)操作符重载1

  • 2017年07月29日 14:02
  • 553KB
  • 下载

C++中的拷贝构造函数和拷贝赋值操作符+const成员变量初始化(5)---《Effective C++》

C++中拷贝构造函数和拷贝赋值操作符,C++中编译器可以自动生成copy 构造函数,copy operator=,析构器等函数,那么什么时候编译器无法自动生成copy 构造函数和copy operat...

thinking in java test4.3练习(1)(2)(3)(4)(5)用三元操作符和按位操作来显示二进制

题目(1):写一个程序,打印从1到100的值。 代码如下: public class Test4_3_1 { public static void main(String[] args...

5操作符与表达式

5. 操作符和表达式运算符与它们的用法 运算符 名称 说明 例子 + 加 两个对象相加 3 + 5得到8。'a' + 'b'得到'ab'。 - 减 得到负数或是一个数...
  • kosl90
  • kosl90
  • 2011年07月10日 22:28
  • 399

STL运用的C++技术(5)——重载操作符

STL是C++标准库的重要组成部分之一,它不仅是一个可复用的组件库,更是一个包含算法与数据结构的软件框架,同时也是C++泛型编程的很好例子。STL中运用了许多C++的高级技术。本文介绍重载操作符。主要...

RxJava系列5(组合操作符)

这一章我们接着介绍组合操作符,这类operators可以同时处理多个Observable来创建我们所需要的Observable。组合操作符主要包含: **`Merge`** **`StartWith`...

RxJava操作符(5)-错误

OnErrorReturn OnErrorReturn操作符是当遇到异常发生时,让Observable发射一个事先预定好的数据出去。 原理图如下: OnErrorReturn操作符使...

The New C++ -- 变量 (5. sizeof表达式,typeid表达式和地址操作符)

我们提到过变量名本身代表了变量的类型和变量的首地址,但这些只有编译器自己才知道。如果我们想在程序中知道每个变量名的类型,变量类型所占内存空间的大小和内存空间的首地址,我们可以通过sizeof表达式,t...

操作符函数及重载(5)

智能指针和操作符重载的限制
  • ptonlix
  • ptonlix
  • 2017年08月04日 15:07
  • 71
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【穷举】5 5 5 5 5=5填入操作符
举报原因:
原因补充:

(最多只允许输入30个字)