您的位置:首页 > 其它

UVA 839 - Not so Mobile(dfs就可以)

2015-05-24 15:41 459 查看
#include <stdio.h>
int ok;
int dfs()
{
int w1,d1,w2,d2;
scanf("%d%d%d%d",&w1,&d1,&w2,&d2);
if(w1 && w2 && d1 && d2)
{
if( (w1*d1) != (w2*d2) ) {ok=0; return 0;}
else     return (w1+w2);
}
else
{
if(!w1)  w1=dfs();
//        if(ok==0)  return 0;
//这两个优化不能做,虽然原理是正确的,但是这道题有一个陷阱,它数据的读入一定要完全读完如果中途返回来就无法再读取数据//了,虽然那些数据也不会改变结果,然后这些漏掉无法读取的数据会塞到下一组数据中,造成一个很严重的错误
if(!w2)  w2=dfs();
//        if(ok==0)  return 0;     //同理
if( (w1*d1) != (w2*d2) ) {ok=0; return 0 ; }
else    return (w1+w2);
}
}
int main()
{
int i,N; struct BTree *T;  int sum;
scanf("%d",&N);
for(i=1; i<=N; i++)
{
ok=1; dfs();
if( ok==1 )  printf("YES\n");
else        printf("NO\n");
if(i!=N)  printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: