题意:
n组数据,每组数据由
WL(左边端点重量,为0时表示有子树,继续输入子树)
DL(左天平臂长)
WR(右边端点重量,为0时表示有子树,继续输入子树)
DR (右天平臂长)
根据力矩(力 乘 力臂)判断是否是一个平衡的天平。
思路:
. 第一次做的时候,给出了模型可以直接建树,深搜每一层是否平衡,过样例但是WA了。。其实这题不用建树,直接递归就行了,比建树确实省力气许多。。
递归框架
写法1
int dfs(int &w) //注意这里要传引用改变主函数中的x,记录每一步是否平衡的情况
{
int w1,l1,w2,l2;
scanf();
bool l=true,r=true;//初始化
if(!w1)
l=dfs(w1);
if(!w2)
r=dfs(w2);
w=w1+w2; //对w的修改会直接修改原变量
if(l&&r%%w1*l1==w2*l2)
return 1;
else
return 0;
}
写法2
int dfs()
{
int w1,l1,w2,l2;
scanf();
if(!w1)
w1=dfs();
if(!w2)
w2=dfs();
if(w1*l1!=w2*l2)
return 0;
return w1+w2;
}
总结一哈~,函数传参传引用时,在函数中修改该值会修改原函数中的值