飛天

快乐的生活......

 

[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;
}



posted on 2008-05-12 18:02 飛天 阅读(533) 评论(0)  编辑 收藏 引用 所属分类: C/C++算法描述ACM


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

常用链接

留言簿(2)

随笔分类

随笔档案

文章分类

文章档案

Blogs

搜索

最新评论

阅读排行榜

评论排行榜