奇妙的23点

来源:互联网 发布:js undefined 和 null 编辑:程序博客网 时间:2024/04/27 18:17

奇妙的23点

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

题意很简单,给出5个数字,你可以使用  +  ,   -  ,  * 运算符(运算符没有优先级关系),使得最后计算的结果等于23,其中给出的5个数字可以任意改变顺序。

输入

 输入5个数字,每个数字的大小范围为[1,50]

输出

 如果最后的运算结果可以等于23,输出Yes,不能的话输出No

示例输入

1 1 1 1 11 2 3 4 52 3 5 7 11

示例输出

NoYesYes

提示

 

来源

 

示例程序

 
#include<stdio.h>  #include<string.h>  int flag;  int vis[55];  int a[6];  int DFS(int i ,int ans,int num)  {      if(flag||num>5)          return 0;      if(ans==23&&num==5)      {          flag=1;          return 1;      }      for(int j=0; j<5; j++)          for(int i=0; i<3; i++)          {              if(vis[j]==0)              {                  vis[j]=1;                  if(i==0)                      DFS(j,ans+a[j],num+1);                  else if(i==1)                      DFS(j,ans-a[j],num+1);                  else                      DFS(j,ans*a[j],num+1);                  vis[j]=0;              }          }        return 0;  }  int main()  {      while(~scanf("%d",&a[0]))      {          flag=0;          for(int i=1; i<5; i++)              scanf("%d",&a[i]);            for(int i=0; i<5; i++)          {              memset(vis,0,sizeof(vis));              vis[i]=1;              DFS(i,a[i],1);              if(flag)                  break;          }          if(flag==0)              printf("No\n");          else              printf("Yes\n");      }  }  

0 0