int find(int x) { return fa[x]==x ? x: fa[x]=find(fa[x]); } return里面是什么意思,求大神?
答案:2 悬赏:0 手机版
解决时间 2021-03-24 06:00
- 提问者网友:贪了杯
- 2021-03-24 00:11
int find(int x) { return fa[x]==x ? x: fa[x]=find(fa[x]); } return里面是什么意思,求大神?
最佳答案
- 五星知识达人网友:纵马山川剑自提
- 2021-03-24 01:37
1< 其实就是int find(int x){
if(fa[x]==x)
return x;
else
{
fa[x]=find(fa[x])
return fa[x];
}
}
够清楚了吧 递归 函数调用自己 ,类似数学里的迭代。。。追问哈哈 这个我知道 谢谢 我想问很弱智的问题if(s&(1< 还有for(int i=0;i<(1< 字节,为8位2进制数,01,000,000表示64(十进制),左移一位后为10,000,000为128也就是乘2啦。&表示与操作,位与位对其,1&1就是1,其余全为0,比如3&5其实就是011&101结果为001就是1啦。懂了吧。追问哈哈 谢谢了!!来自:求助得到的回答
if(fa[x]==x)
return x;
else
{
fa[x]=find(fa[x])
return fa[x];
}
}
够清楚了吧 递归 函数调用自己 ,类似数学里的迭代。。。追问哈哈 这个我知道 谢谢 我想问很弱智的问题if(s&(1<
全部回答
- 1楼网友:一袍清酒付
- 2021-03-24 02:40
基本实现其他答案都已经说了。
其实这个函数是并查集用来求一个节点所在联通块的根节点的函数
而且这个函数还使用了路径压缩,很巧妙
其实这个函数是并查集用来求一个节点所在联通块的根节点的函数
而且这个函数还使用了路径压缩,很巧妙
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯