精华内容
下载资源
问答
  • 在家上网课贼无聊,于是复习以前的知识点,瞥到之前用递归实现的科赫曲线,突然来了一点头绪,上博客转转,却看到堆大佬画的樱花,实属牛逼,就是感觉教学不是很详细,于是我研究了一下,写下我所理解的关于的...

    程序员就只能简简单单的用手里的代码来实现自己最直接的想法。-------------鲁迅表示这句话他没说过—————————————————————————————————————————————
    在家上网课贼无聊,于是复习以前的知识点,瞥到之前用递归实现的科赫曲线,突然来了一点头绪,上博客转转,却看到一堆大佬画的樱花树,实属牛逼,就是感觉教学不是很详细,于是我研究了一下,写下我所理解的关于树的画法,下面有些思想还是借鉴大佬们的。

    ————————————————————————————————————————————–
    在这里我们是要用到turtle函数库,用法可以参考我关注的博主教程:turtle库的使用
    这里如果有不懂递归的朋友也可以参考这位博主的解析:递归思路

    效果图:

    一种颜色的花朵的树:
    在这里插入图片描述

    这是很多大佬的原思想图,我做了一点改进。
    在这里插入图片描述

    画这棵树分为二部分,画整体和画落下的花瓣:

    画落下的花瓣:

    这里用到了随机函数库random,确保每次画叶子的位置不同,形成那种真实感:

    	import turtle as t
        for i in range(150):  # 循环150次 绘制 掉落的花瓣
            a = 250 - 500 * random.random()  # 花瓣整体长度,有正有负就可以让海龟往二个方向走
            b = 10 - 20 * random.random()  # 花瓣整体宽度,正负道理一致,数值可以根据实际输入
            t.penup()  # 抬笔向前随机走b个宽度,左转90,随机走a个长度,落笔,跟我画一个小圈圈
            t.fd(b)
            t.left(90)
            t.fd(a)
            t.pendown()
            t.pencolor("lightcoral")  # 珊瑚色
            t.circle(1)
            t.penup()     # 跟我左边抬个笔,后退个a的长度,右边转个90,后退个b的宽度,这样可以
            t.backward(a)  #  让海龟回到和刚出发位置差不多的水平线上,所以上面的b设置最好小一点
            t.right(90)
            t.backward(b)
    
    

    画树枝部分:

    这里用到了二叉树的递归思想:
    我就小小的画了一个很正的二叉树给你们看看效果就行

    在这里插入图片描述
    这样的树就是很端正,但是实话就是不好看,我们给出代码:

    	import turtle as t
    	brance = 60  #  枝条 总度
        def draw_tree1(brance):
        	if brance > 10:  # 条件满足先画右边
            	t.fd(brance)  # 绘制最开始的树干 
            	t.right(30)  # 然后右转30,第一个右分支
            	draw_tree1(brance / 1.5)  # 继续画右边的 走不动了往左边转60 和下面一样用到了递归
            	t.left(60)   # 然后左转60  进入向左绘制
            	draw_tree1(brance / 1.5)  # 继续画左边的,走不动了右转30回到最后一步的之前那个节点  
            	t.right(30)
            	# 给最后二个树枝画上雪白的叶子
            	if brance / 1.5 <= 10:  #  这个条件可以根据实际设置
                	t.pencolor("snow")
            	else:
                	t.pencolor("Tan")  #  褐色
            	t.backward(brance)  # 当递归条件不满足的时候,后退一个节点
    

    思考什么因素让这棵树如此端正,因为每次向左向右的角度固定,向前衍生的枝条长度也是固定
    那我们可以想到用随机函数库random来实现每次的操作不一致,就能产生不一样的效果

    画一种颜色的树:

    代码:

    import turtle as t
    brance = 70
    def draw_tree(brance):  # 画树枝部分  分支量 
        if brance > 4:  # 设置一个最小分支量 可以自己改
            if 8 <= brance <= 16:   # 分支量在这个范围内,画笔大小缩小四倍,画中等细小的树枝
                t.pencolor("lightcoral")  # 珊瑚色
                t.pensize(brance / 4)
            elif brance < 8:   #  分支量在这个范围内,画笔大小缩小二倍 , 画细小的树枝
                t.pencolor("lightcoral")  # 珊瑚色
                t.pensize(brance / 2)
            else:   #  其他范围内,我们让程序画树干部分
                t.pencolor("Tan")  # 褐色
                t.pensize(brance / 10)  # 缩小支柱
            t.fd(brance)  # 最开始的树干部分
            a = 1.5 * random.random()  # 随机度数因子
            t.right(20 * a)   #右转随机角度
            b = 1.5 * random.random()  # 随机长度因子
            draw_tree(brance - 10 * b)  # 往右画,直到画不动为止,然后左转随机度数
            t.left(40 * a)  # 左转随机角度
            draw_tree(brance - 10 * b)  # 往左画,直到画不动位置,然后右转随机度数
            t.right(20 * a)   # 右转一定角度
            t.penup()
            t.backward(brance)  # 递归结束回到上一个节点
            t.pendown()
    
    

    这样我们就实现了一棵只有一种颜色花朵的树

    画二种颜色的树:

    如何绘制二种颜色的树呢?我们只需要在每一个分支范围内进行一次判断,如果条件为真,那我们改颜色,反之,我们不改颜色:
    代码如下:

            if 8 <= brance <= 16:
                if random.randint(0, 2) == 0: #这里随机三个数 三分之一概论 改颜色 
                    t.pencolor("snow")     # 因为这个范围还是画中等细小树枝
                else:
                    t.pencolor("lightcoral")  # 珊瑚色
                t.pensize(brance / 4)
            elif brance < 8:
                if random.randint(0, 1) == 0:   # 这里随机两二个树,二分之一
                    t.pencolor("snow")           # 因为这里画很细小的树枝  概论小点
                else:
                    t.pencolor("lightcoral")  # 珊瑚色
                t.pensize(brance / 2)
            else:
                t.pencolor("Tan")  # 褐色
                t.pensize(brance / 10)  # 缩小分支量
    

    大致代码基本都给出了,这里说明一下,如果想绘制二棵以上,只要在主程序下面先运行一棵,然后修改一下起点位置,重新调用一下二个函数就行,里面的值最好设置小一点,可以有个层次感。

    主程序:

    import turtle as  T
    import random
    t = T.Turtle()
    w = T.Screen()
    w.screensize(bg='wheat')  # 画布颜色小麦色 个人觉得还是这个最搭配
    t.getscreen().tracer(5, 0)  # 返回正在绘制的对象 并且加速5倍
    t.pensize(5)
    t.left(90)
    t.penup()
    t.backward(250)
    t.pendown()
    t.pencolor("Tan")  # 褐色
    draw_tree(70)  # 第一颗桃花,支柱设置70
    petel(250)  # 花瓣250
    w.exitonclick()  # 点击关闭画布
    
    

    展开全文
  • 桃花 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言...桃花一无主,可爱深红映浅红。 ——《题百叶桃花》 桃花长在桃树上,的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花...

    桃花

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 262144K,其他语言524288K
    64bit IO Format: %lld

    题目描述

        桃花一簇开无主,可爱深红映浅红。

                                            ——《题百叶桃花》

        桃花长在桃树上,树的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花。HtBest有一个魔法棒,摘到树上任意一条链上的所有桃花,由于HtBest法力有限,只能使用一次魔法棒,请求出Htbest最多可以摘到多少个桃花。

    输入描述:

    第一行有一个正整数n,表示桃树的节点个数。
    接下来n-1行,第i行两个正整数ai,bi ,表示桃树上的节点ai,bi之间有一条边。

    输出描述:

    第一行一个整数,表示HtBest使用一次魔法棒最多可以摘到多少桃花。

    示例1

    输入

    复制

    3
    1 2
    2 3

    输出

    复制

    3

    示例2

    输入

    复制

    3
    1 2
    1 3

    输出

    复制

    3

    示例3

    输入

    复制

    4
    1 2
    2 3
    3 4

    输出

    复制

    4

    备注:

    对于100%的测试数据:
    1 ≤ n ≤ 1000000
    数据量较大,注意使用更快的输入输出方式。

    链接:https://ac.nowcoder.com/acm/problem/17362

    题意:求最长的一条线。

    题解:树的直径,先随机找一点开始dfs到最远的点,然后从最远的点dfs到另一个最远的点。

    #include <stdio.h>
    #include <vector>
    using namespace std;
    vector<int>maps[1000000];
    bool book[1000000];
    int maxlen,maxnode;
    int read()
    {
        char ch=getchar();
    	int x=0,f=0;
        while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();
        while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
        return x;
    }
    void dfs(int node,int len)
    {	
    	if(len>maxlen)
    	{
    		maxlen=len;
    		maxnode=node;
    	}
    	for(int i=0;i<maps[node].size();++i)
    	{
    		if(book[maps[node][i]]==false)
    		{
    			book[maps[node][i]]=true;
    			dfs(maps[node][i],len+1);
    			book[maps[node][i]]=false;
    		}
    	}
    } 
    int main()
    {
    	int n,l,r;
    	n=read();
    	for(int i=1;i<n;++i)
    	{
    		l=read(),r=read();
    		maps[l].push_back(r);
    		maps[r].push_back(l);
    	}
    	book[1]=true;
    	dfs(1,1);
    	book[1]=false;
    	book[maxnode]=true;
    	dfs(maxnode,1);
    	printf("%d",maxlen);
    	return 0;
    }

     

    展开全文
  • 效果图:画这棵分为二部分,画整体和画落下的花瓣:画落下的花瓣:画树枝部分:画种颜色的:画二种颜色的:主程序: 我们不做代码的搬运工,要做有灵魂的程序员,会写代码的程序员千篇一律,有趣的代码万里挑...


    我们不做代码的搬运工,要做有灵魂的程序员,会写代码的程序员千篇一律,有趣的代码万里挑一

    瞥到之前用递归实现的科赫曲线,突然来了一点头绪,于是我研究了一下,写下我所理解的关于树的画法,希望关键时刻您能用的上,话不多说,有图有代码。

    效果图:

    一种颜色的花朵的树:
    在这里插入图片描述
    我做了一点改进在这里插入图片描述

    画这棵树分为二部分,画整体和画落下的花瓣:

    画落下的花瓣:

    这里用到了随机函数库random,确保每次画叶子的位置不同,形成那种真实感:

    import turtle as t
        for i in range(150):  # 循环150次 绘制 掉落的花瓣
            a = 250 - 500 * random.random()  # 花瓣整体长度,有正有负就可以让海龟往二个方向走
            b = 10 - 20 * random.random()  # 花瓣整体宽度,正负道理一致,数值可以根据实际输入
            t.penup()  # 抬笔向前随机走b个宽度,左转90,随机走a个长度,落笔,跟我画一个小圈圈
            t.fd(b)
            t.left(90)
            t.fd(a)
            t.pendown()
            t.pencolor("lightcoral")  # 珊瑚色
            t.circle(1)
            t.penup()     # 跟我左边抬个笔,后退个a的长度,右边转个90,后退个b的宽度,这样可以
            t.backward(a)  #  让海龟回到和刚出发位置差不多的水平线上,所以上面的b设置最好小一点
            t.right(90)
            t.backward(b)
    

    画树枝部分:

    这里用到了二叉树的递归思想:
    我就小小的画了一个很正的二叉树给你们看看效果就行

    在这里插入图片描述
    这样的树就是很端正,但是实话就是不好看,我们给出代码:

    import turtle as t
    	brance = 60  #  枝条 总度
        def draw_tree1(brance):
        	if brance > 10:  # 条件满足先画右边
            	t.fd(brance)  # 绘制最开始的树干 
            	t.right(30)  # 然后右转30,第一个右分支
            	draw_tree1(brance / 1.5)  # 继续画右边的 走不动了往左边转60 和下面一样用到了递归
            	t.left(60)   # 然后左转60  进入向左绘制
            	draw_tree1(brance / 1.5)  # 继续画左边的,走不动了右转30回到最后一步的之前那个节点  
            	t.right(30)
            	# 给最后二个树枝画上雪白的叶子
            	if brance / 1.5 <= 10:  #  这个条件可以根据实际设置
                	t.pencolor("snow")
            	else:
                	t.pencolor("Tan")  #  褐色
            	t.backward(brance)  # 当递归条件不满足的时候,后退一个节点
    

    思考什么因素让这棵树如此端正,因为每次向左向右的角度固定,向前衍生的枝条长度也是固定
    那我们可以想到用随机函数库random来实现每次的操作不一致,就能产生不一样的效果

    画一种颜色的树:

    import turtle as t
    brance = 70
    def draw_tree(brance):  # 画树枝部分  分支量 
        if brance > 4:  # 设置一个最小分支量 可以自己改
            if 8 <= brance <= 16:   # 分支量在这个范围内,画笔大小缩小四倍,画中等细小的树枝
                t.pencolor("lightcoral")  # 珊瑚色
                t.pensize(brance / 4)
            elif brance < 8:   #  分支量在这个范围内,画笔大小缩小二倍 , 画细小的树枝
                t.pencolor("lightcoral")  # 珊瑚色
                t.pensize(brance / 2)
            else:   #  其他范围内,我们让程序画树干部分
                t.pencolor("Tan")  # 褐色
                t.pensize(brance / 10)  # 缩小支柱
            t.fd(brance)  # 最开始的树干部分
            a = 1.5 * random.random()  # 随机度数因子
            t.right(20 * a)   #右转随机角度
            b = 1.5 * random.random()  # 随机长度因子
            draw_tree(brance - 10 * b)  # 往右画,直到画不动为止,然后左转随机度数
            t.left(40 * a)  # 左转随机角度
            draw_tree(brance - 10 * b)  # 往左画,直到画不动位置,然后右转随机度数
            t.right(20 * a)   # 右转一定角度
            t.penup()
            t.backward(brance)  # 递归结束回到上一个节点
            t.pendown()
    
    

    这样我们就实现了一棵只有一种颜色花朵的树

    画二种颜色的树:

    如何绘制二种颜色的树呢?我们只需要在每一个分支范围内进行一次判断,如果条件为真,那我们改颜色,反之,我们不改颜色:

     if 8 <= brance <= 16:
                if random.randint(0, 2) == 0: #这里随机三个数 三分之一概论 改颜色 
                    t.pencolor("snow")     # 因为这个范围还是画中等细小树枝
                else:
                    t.pencolor("lightcoral")  # 珊瑚色
                t.pensize(brance / 4)
            elif brance < 8:
                if random.randint(0, 1) == 0:   # 这里随机两二个树,二分之一
                    t.pencolor("snow")           # 因为这里画很细小的树枝  概论小点
                else:
                    t.pencolor("lightcoral")  # 珊瑚色
                t.pensize(brance / 2)
            else:
                t.pencolor("Tan")  # 褐色
                t.pensize(brance / 10)  # 缩小分支量
    
    

    大致代码基本都给出了,这里说明一下,如果想绘制二棵以上,只要在主程序下面先运行一棵,然后修改一下起点位置,重新调用一下二个函数就行,里面的值最好设置小一点,可以有个层次感。

    主程序:

    import turtle as  T
    import random
    t = T.Turtle()
    w = T.Screen()
    w.screensize(bg='wheat')  # 画布颜色小麦色 个人觉得还是这个最搭配
    t.getscreen().tracer(5, 0)  # 返回正在绘制的对象 并且加速5倍
    t.pensize(5)
    t.left(90)
    t.penup()
    t.backward(250)
    t.pendown()
    t.pencolor("Tan")  # 褐色
    draw_tree(70)  # 第一颗桃花,支柱设置70
    petel(250)  # 花瓣250
    w.exitonclick()  # 点击关闭画布
    
    展开全文
  • *的直径是指的最长简单路。求法: 两遍BFS :先任选一个起点BFS找到最长路的终点,再从终点进行BFS,则第二次BFS找到的最长路即为的直径 ... 来源:牛客网 ...桃花一无主,可爱深红映浅红。 ——...
    1. *树的直径是指树的最长简单路。求法: 两遍BFS :先任选一个起点BFS找到最长路的终点,再从终点进行BFS,则第二次BFS找到的最长路即为树的直径

    链接:https://www.nowcoder.com/acm/contest/136/C

    来源:牛客网

    题目描述

        桃花一簇开无主,可爱深红映浅红。

                                            ——《题百叶桃花》

     

        桃花长在桃树上,树的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花。HtBest有一个魔法棒,摘到树上任意一条链上的所有桃花,由于HtBest法力有限,只能使用一次魔法棒,请求出Htbest最多可以摘到多少个桃花。

     

    输入描述:

    第一行有一个正整数n,表示桃树的节点个数。
    接下来n-1行,第i行两个正整数ai,bi ,表示桃树上的节点ai,bi之间有一条边。

    输出描述:

    第一行一个整数,表示HtBest使用一次魔法棒最多可以摘到多少桃花。
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<math.h>
    #include<set>
    #include<vector>
    #include<sstream>
    #include<queue>
    #define ll long long
    #define PI 3.1415926535897932384626
    #define inf 0x3f3f3f3f
    using namespace std;
    const int maxn=1e6+10;
    struct Edge
    {
        int to,next;
        int flag;
    }edge[maxn];
    int tot;
    int head[maxn];
    int maxs;
    int vis[maxn];
    template <class T>
    struct node
    {
        int v,setp;
    };
    void init()
    {
        tot=1;
        memset(head,-1,sizeof(head));
    }
    void addedge(int u,int v)
    {
        edge[tot].to=v;
        edge[tot].next=head[u];
        head[u]=tot++;
    }
    int bfs(int x)
    {
        memset(vis,0,sizeof(vis));
        node start,next;
        queue<node>q;
        start.v=x;
        start.setp=1;
        q.push(start);
        int t;
        while(!q.empty())
        {
            start=q.front();
            q.pop();
            for(int i=head[start.v];i!=-1;i=edge[i].next)
            {
                if(!vis[edge[i].to]){
                    next.v=edge[i].to;
                    next.setp=start.setp+1;
                    q.push(next);
                    vis[next.v]=1;
                    if(next.setp>maxs)
                    {
                        maxs=next.setp;
                        t=next.v;
                    }
                }
            }
        }
        return t;
    }
    int main()
    {
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            init();
            for(int i=1;i<=n-1;i++)
            {
                int u,v;
                scanf("%d%d",&u,&v);
                addedge(u,v);
                addedge(v,u);
            }
            maxs=0;
            int point=bfs(bfs(1));
            printf("%d\n",maxs);
        }
        return 0;
    }
    

     

    展开全文
  • 链接:... 题目描述 ...桃花一无主,可爱深红映浅红。 ——《题百叶桃花》 桃花长在桃树上,的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花。HtBest有一个魔法棒,...
  • 一树芬芳

    2011-06-15 16:09:00
    杏花桃花过后,山坡上的洋槐树还是依旧的青涩,依旧的一树枯枝,妈妈有些着急,说:是不是都冻死了,旱死了?我说不会吧,每年相对别的树种,它们都要变化的晚一些。 5月,一场浸透的好雨过后,没有几日,得到雨水...
  • 牛客网 桃花

    2018-08-20 21:11:10
    链接:...来源:牛客网 桃花一无主,可爱深红映浅红。 ——《题百叶桃花》 桃花长在桃树上,的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花。HtBest有一个魔法棒,摘到上任意一条...
  • 桃花一无主,可爱深红映浅红。 ——《题百叶桃花》 桃花长在桃树上,的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花。HtBest有一个魔法棒,摘到上任意一条链上的所有桃花,由于HtBest法力有限,...
  • 桃花 (DFS)

    2018-08-22 18:59:39
    桃花 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,... 桃花一无主,可爱深红映浅红。 ——《题百叶桃花》 桃花长在桃树上,的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花。HtBes...
  • 桃花

    2015-02-05 16:05:00
    俺曾见,金陵玉树莺声晓,秦淮水榭花开早,谁知道容易冰消! 眼看他起朱楼,眼看他宴宾客,眼看他楼塌了。...清代孔尚任的《桃花扇》 书中,在【离亭宴带歇指煞】中,老艺人苏昆生放声悲歌,尽情发抒。 转载于:...
  • 桃花一无主,可爱深红映浅红。 ——《题百叶桃花》 桃花长在桃树上,的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花。HtBest有一个魔法棒,摘到上任意一条链上的所有桃花,由于HtBest法力有限,只能...
  • 牛客网--桃花

    2019-01-13 17:06:09
    来源:牛客网 ... 桃花一无主,可爱深红映浅红。  ——《题百叶桃花》  桃花长在桃树上,的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花。HtBest有一个魔法棒,摘到上任意一条链上...
  • 牛客小白月赛6 C.桃花

    2020-09-01 16:51:50
    桃花一无主,可爱深红映浅红。——《题百叶桃花》 桃花长在桃树上,的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花。HtBest有一个魔法棒,摘到上任意一条链上的所有桃花,由于HtBest法力有限,只能...
  • 牛客小白月赛6 C 桃花

    2018-09-12 00:26:37
    桃花一无主,可爱深红映浅红。  ——《题百叶桃花》  桃花长在桃树上,的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花。HtBest有一个魔法棒,摘到上任意一条链上的所有桃花,由于...
  • C-桃花 链接:https://www.nowcoder.com/acm/contest/136/C 来源:牛客网 题目描述 桃花一无主,可爱深红映浅红。 ——《题百叶桃花》 桃花长在桃树上,的...
  • 深搜DFS_桃花(求图的最长路径)

    千次阅读 2018-08-19 12:20:41
     桃花一无主,可爱深红映浅红。  ——《题百叶桃花》  桃花长在桃树上,的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花。HtBest有一个魔法棒,摘到上任意一条链上的所有桃...
  • 桃花一无主,可爱深红映浅红。  ——《题百叶桃花》  桃花长在桃树上,的每个节点有一个桃花,调皮的HtBest想摘尽可能多的桃花。HtBest有一个魔法棒,摘到上任意一条链上的所有桃花,由于HtBest法力有限...
  • Python:绘制樱花

    千次阅读 多人点赞 2020-04-06 19:45:00
    这篇文章参考了别人的博客《三月桃花开,用python给你带来你的桃花运,详细解析画棵表白》[1],原文作者:沙漏在下雨,这里简单记录一下学习过程。

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

桃花一树开