[ACM 1040] 凑表达式

[ACM 1040] 凑表达式

凑表达式
Time Limit:1000MS  Memory Limit:32768K

Description:

有一些整数组,每三个数成一组。如果三个数经过四则运算(+、-、×、÷)得出结果0,则输出“yes”,否则输出“no”。当三个数为全0时表示输入结束。

Sample Input:

1 2 3
3 8 10
100 210 7
900 1 0
0 0 0

Sample Output:

yes
no
no
yes
================================================================================
提交沒有成功
#include  < cstdlib >
#include 
< iostream >

using   namespace  std;
#define  MAX_ROW 50

string   out [MAX_ROW];
int  num[MAX_ROW][ 3 ];
int  index = 0 ;

void  output()
{
       
for(int i=0;i<index;++i)
       
{
          cout
<<out[i].c_str();
          cout
<<endl;
       }

}
   //深搜直到第三層,判斷值是否為0
bool  dfs( float  number, int  n)
{
    
if(n>=3
        
return number==0;
    
if(dfs(number+num[index][n],n+1)) return true;
    
if(dfs(number-num[index][n],n+1)) return true;
    
if(dfs(number*num[index][n],n+1)) return true;
    
if(dfs(number/num[index][n],n+1)) return true;  
    
return false;    
}
   
int  main( int  argc,  char   * argv[])
{
   
    
while(1)
    
{
     
for(int i=0;i<3;++i)
             cin
>>num[index][i];
     
if(num[index][0]==0&&
       num[index][
1]==0&&
         num[index][
2]==0)
         
{
             
break;              
         }

         
       
if(dfs(num[index][0],1)) out[index]="yes";
       
else out[index]="no";
       index
++;
     }

    
    output();  
    system(
"PAUSE");
    
return 0;
}



你可能感兴趣的:([ACM 1040] 凑表达式)