3 条题解

  • 0
    @ 2023-11-18 22:29:28

    先构建一个二维数组,使用DFS递归填充即可,再最后打印。

    因为每一级豆子都是由上一级组成,所以从 n 递归到 1,n级豆子就会有1 << n - 1 行个一级豆子组成(“<<”位移运算符,二进制之下进行左移,具体作用自己查询)

    自定义函数dfs(n, good, x1 y1, x2, y2).六个参数分别为n级豆子, 是否为好豆子, n - 1级豆子的上下边界,n - 1级豆子的左右边界。

    这只是做法之一, 也是比较容易想到的一种。

    #include<bits/stdc++.h>
    using namespace std;
    char mp[5000][5000];
    void dfs(int n, int op, int lt, int rt, int l, int r) 
    {
    	if(n==0)
    	{
    		for(int i = lt; i <= rt; i++)
    		{
    			for(int j = l; j <= r; j++)
    			mp[i][j] = (op ? '.': '*');
    		}
    		return ;
    	} 
        int len = (1 << (n - 1)) * 3;
    	dfs(n - 1, op ^ 1, lt, lt + len-1,l, l + len - 1);
    	dfs(n - 1, op ^ 1, lt, lt +  len-1, l + len, r);
    	dfs(n - 1, op ^ 1, lt + len, rt, l, l + len - 1);
    	dfs(n - 1, op, lt + len, rt, l + len, r);
    }
    void solve()
    {
    	int n;
    	cin>>n;
    	dfs(n, 1, 1, (1 << n) * 3, 1, (1 << n) * 3);
    	for(int i = 1; i <= (1 << n) * 3; i++)
    	{
    		for(int j = 1; j <= (1 << n) * 3; j++)
    		cout<< mp[i][j];
    		cout<<"\n";
    	}
    }
    signed main()
    {
    	int t = 1;
    //	cin>>t;
    	while(t--)
    	{
    		solve();
    	}
    	return 0;
    }
    

    关于因悠哉但不平常的一年级的小学生莲华画的图形而出的打印图形签到题

    信息

    ID
    935
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    23
    已通过
    5
    上传者