小工具知识网

当前位置: 首页 > 行业知识 > 蓝桥杯倒计时 36天-DFS练习2

行业知识

蓝桥杯倒计时 36天-DFS练习2

2026-11-15 10:21:31 来源:互联网转载

文章目录

  • 黄金二叉树
  • ���沌之力2

    黄金二叉树

    思路一:递推做法

    #includeusing namespace std;const int N = 1e5+10;int A[N];int B[N];int n,sum;int main( ){  cin>>n;  for(int i=1;i>A[i];  int left,right;  for(int i=1;i    cin>left;    cin>>right;    if(left>0)B[left]=B[i]+1;//如果节点 i 有左子节点,计算左子节点的黄金指数    if(right>0)B[right]=B[i]-1;//如果节点 i 有右子节点,计算左子节点的黄金指数    if(B[i]==0)sum+=A[i];//如果节点 i 黄金指数 为 0,将权重加起来  }  cout    int res = (j == k) ? w[u] : 0; //如果黄金指数为 0,加入权值    if(l[u]!=-1)res += dfs(l[u],j+1,k);//如果有左节点,搜索左节点,黄金指数+1。    if(r[u]!=-1)res += dfs(r[u],j,k+1);//如果有右节点,搜索右节点,黄金指数+1。    return res;}int main( ){    cinn;    for(int i=1;i>w[i];    for(int i=1;i>l[i]>>r[i];    cout1,0,-1,0},dy[ ] = {0,1,0,-1};int colors[N][N];//涂色void dfs(int x,int y,int color){    colors[x][y]=color;    for(int i=0;i        int nx = dx[i]+x,ny = dy[i]+y;        if(nx    int color = 0;    for(int i=0;i        int nx = dx[i]+x,ny = dy[i]+y;        if(nx    cinnm;    cinx>>y>>x2>>y2;    x--,y--,x2--,y2--;    for(int i=0;i>mp[i];    dfs(x,y,1);    //源点能直接到达终点    if(colors[x2][y2]==1){puts("Yes"),return 0;}//输出后一定要 return 返回    dfs(x2,y2,2);    for(int i=0;i        for(int j=0;j            if(mp[i][j]=='#'){                //墙是否间隔源点和终点                if(check(i,j)){                    puts("Yes"),return 0;//输出后一定要 return 返回                }            }        }    }    //没有符合条件的答案    puts("No");    return 0;}

上一篇:GitLab注册指南,快速创建账户,开启协作之旅!

下一篇:都市藏娇,轻松下载txt版攻略