3 条题解

  • 0
    @ 2023-12-22 10:59:28

    字符串的重复调用

    #include <iostream>
    using namespace std;
    int n,bi=2;
    string g[11][100000],b[11][100000];
    void fun(int ni)
    {
    	if(ni==n) return ;
    	for(int i=1;i<=6*bi;i++)
    	{
    		if(i<=3*bi)
    		g[ni+1][i]=b[ni][i]+b[ni][i];
    		else
    		g[ni+1][i]=b[ni][i-3*bi]+g[ni][i-3*bi];
    		if(i<=3*bi)
    		b[ni+1][i]=g[ni][i]+g[ni][i];
    		else
    		b[ni+1][i]=g[ni][i-3*bi]+b[ni][i-3*bi];
    	}
    	bi=bi*2;
    	fun(ni+1);
    }
    int main()
    {
    	cin>>n;
    g[1][1]="******";
    g[1][2]="******";
    g[1][3]="******";
    g[1][4]="***...";
    g[1][5]="***...";
    g[1][6]="***...";
    b[1][1]="......";
    b[1][2]="......";
    b[1][3]="......";
    b[1][4]="...***";
    b[1][5]="...***";
    b[1][6]="...***";
    fun(1);
    for(int i=1;i<=3*bi;i++)
    	{
    		cout<<g[n][i]<<"\n";
    	}
    }
    
    • 0
      @ 2023-11-24 21:28:19

      暴力美学

      #include<stdio.h>
      
      char g1[7][7];
      char b1[7][7];	
      char g2[13][13];
      char b2[13][13];
      char g3[25][25];
      char b3[25][25];
      char g4[49][49];
      char b4[49][49];
      char g5[97][97];
      char b5[97][97];
      char g6[193][193];
      char b6[193][193];
      char g7[385][385];
      char b7[385][385];
      char g8[769][769];
      char b8[769][769];
      char g9[1537][1537];
      char b9[1537][1537];
      char gx[3073][3073];
      void h1();
      void h2();
      void h3();
      void h4();
      void h5();
      void h6();
      void h7();
      void h8();
      void h9();
      void hx();
      int main()
      {
      	h1();
      	h2();
      	h3();
      	h4();
      	h5();
      	h6();
      	h7();
      	h8();
      	h9();
      	hx();
      	int n;
      	scanf("%d",&n);
      	if(n == 1)
      	{
      		for(int i = 0; i < 6; i++)
      		{
      			for(int j = 0; j < 6; j++)
      			{
      				printf("%c",g1[i][j]);
      			}
      			printf("\n");
      		}
      	}
      	else if(n == 2)
      	{
      		for(int i = 0; i < 12; i++)
      		{
      			for(int j = 0; j < 12; j++)
      			{
      				printf("%c",g2[i][j]);
      			}
      			printf("\n");
      		}
      	}
      	else if(n == 3)
      	{
      		for(int i = 0; i < 24; i++)
      		{
      			for(int j = 0; j < 24; j++)
      			{
      				printf("%c",g3[i][j]);
      			}
      			printf("\n");
      		}
      	}
      	else if(n == 4)
      	{
      		for(int i = 0; i < 48; i++)
      		{
      			for(int j = 0; j < 48; j++)
      			{
      				printf("%c",g4[i][j]);
      			}
      			printf("\n");
      		}
      	}
      	else if(n == 5)
      	{
      		for(int i = 0; i < 96; i++)
      		{
      			for(int j = 0; j < 96; j++)
      			{
      				printf("%c",g5[i][j]);
      			}
      			printf("\n");
      		}
      	}
      	else if(n == 6)
      	{
      		for(int i = 0; i < 192; i++)
      		{
      			for(int j = 0; j < 192; j++)
      			{
      				printf("%c",g6[i][j]);
      			}
      			printf("\n");
      		}
      	}
      	else if(n == 7)
      	{
      		for(int i = 0; i < 384; i++)
      		{
      			for(int j = 0; j < 384; j++)
      			{
      				printf("%c",g7[i][j]);
      			}
      			printf("\n");
      		}
      	}
      	else if(n == 8)
      	{
      		for(int i = 0; i < 768; i++)
      		{
      			for(int j = 0; j < 768; j++)
      			{
      				printf("%c",g8[i][j]);
      			}
      			printf("\n");
      		}
      	}
      	else if(n == 9)
      	{
      		for(int i = 0; i < 1536; i++)
      		{
      			for(int j = 0; j < 1536; j++)
      			{
      			 	printf("%c",g9[i][j]);
      			}
      			printf("\n");
      		}
      	}
      	else if(n == 10)
      	{
      		for(int i = 0; i < 3072; i++)
      		{
      			for(int j = 0; j < 3072; j++)
      			{
      				printf("%c",gx[i][j]);
      			}
      			printf("\n");
      		}
      	}
      }
      
      void h1()
      {
      	for(int i = 0; i < 3; i++)
      	{
      		for(int j = 0; j < 6; j++)
      		{
      			g1[i][j]='*';
      			b1[i][j]='.';
      		}
      	}
      	for(int i = 3; i < 6; i++)
      	{
      		for(int j = 0; j < 3; j++)
      		{
      			g1[i][j]='*';
      			b1[i][j]='.';
      		}
      		for(int j = 3; j < 6; j++)
      		{
      			g1[i][j]='.';
      			b1[i][j]='*';
      		}
      	}
      }
      
      void h2()
      {
      	for(int i = 0; i < 6; i++)
      	{
      		for(int j = 0; j < 6; j++)
      		{
      			g2[i][j]=b1[i][j];
      			b2[i][j]=g1[i][j];
      		}
      	}
      	for(int i = 0; i < 6; i++)
      	{
      		for(int j = 6; j < 12; j++)
      		{
      			g2[i][j]=b1[i][j%6];
      			b2[i][j]=g1[i][j%6];
      		}
      	}
      	for(int i = 6; i < 12; i++)
      	{
      		for(int j = 0; j < 6; j++)
      		{
      			g2[i][j]=b1[i%6][j];
      			b2[i][j]=g1[i%6][j];
      		}
      	}
      	for(int i = 6; i < 12; i++)
      	{
      		for(int j = 6; j < 12; j++)
      		{
      			g2[i][j]=g1[i%6][j%6];
      			b2[i][j]=b1[i%6][j%6];
      		}
      	}
      }
      
      void h3()
      {
      	for(int i = 0; i < 12; i++)
      	{
      		for(int j = 0; j < 12; j++)
      		{
      			g3[i][j]=b2[i][j];
      			b3[i][j]=g2[i][j];
      		}
      	}
      	for(int i = 0; i < 12; i++)
      	{
      		for(int j = 12; j < 24; j++)
      		{
      			g3[i][j]=b2[i][j%12];
      			b3[i][j]=g2[i][j%12];
      		}
      	}
      	for(int i = 12; i < 24; i++)
      	{
      		for(int j = 0; j < 12; j++)
      		{
      			g3[i][j]=b2[i%12][j];
      			b3[i][j]=g2[i%12][j];
      		}
      	}
      	for(int i = 12; i < 24; i++)
      	{
      		for(int j = 12; j < 24; j++)
      		{
      			g3[i][j]=g2[i%12][j%12];
      			b3[i][j]=b2[i%12][j%12];
      		}
      	}
      }
      
      void h4()
      {
      	for(int i = 0; i < 24; i++)
      	{
      		for(int j = 0; j < 24; j++)
      		{
      			g4[i][j]=b3[i][j];
      			b4[i][j]=g3[i][j];
      		}
      	}
      	for(int i = 0; i < 24; i++)
      	{
      		for(int j = 24; j < 48; j++)
      		{
      			g4[i][j]=b3[i][j%24];
      			b4[i][j]=g3[i][j%24];
      		}
      	}
      	for(int i = 24; i < 48; i++)
      	{
      		for(int j = 0; j < 24; j++)
      		{
      			g4[i][j]=b3[i%24][j];
      			b4[i][j]=g3[i%24][j];
      		}
      	}
      	for(int i = 24; i < 48; i++)
      	{
      		for(int j = 24; j < 48; j++)
      		{
      			g4[i][j]=g3[i%24][j%24];
      			b4[i][j]=b3[i%24][j%24];
      		}
      	}
      }
      
      void h5()
      {
      	for(int i = 0; i < 48; i++)
      	{
      		for(int j = 0; j < 48; j++)
      		{
      			g5[i][j]=b4[i][j];
      			b5[i][j]=g4[i][j];
      		}
      	}
      	for(int i = 0; i < 48; i++)
      	{
      		for(int j = 48; j < 96; j++)
      		{
      			g5[i][j]=b4[i][j%48];
      			b5[i][j]=g4[i][j%48];
      		}
      	}
      	for(int i = 48; i < 96; i++)
      	{
      		for(int j = 0; j < 48; j++)
      		{
      			g5[i][j]=b4[i%48][j];
      			b5[i][j]=g4[i%48][j];
      		}
      	}
      	for(int i = 48; i < 96; i++)
      	{
      		for(int j = 48; j < 96; j++)
      		{
      			g5[i][j]=g4[i%48][j%48];
      			b5[i][j]=b4[i%48][j%48];
      		}
      	}
      }
      
      void h6()
      {
      	for(int i = 0; i < 96; i++)
      	{
      		for(int j = 0; j < 96; j++)
      		{
      			g6[i][j]=b5[i][j];
      			b6[i][j]=g5[i][j];
      		}
      	}
      	for(int i = 0; i < 96; i++)
      	{
      		for(int j = 96; j < 192; j++)
      		{
      			g6[i][j]=b5[i][j%96];
      			b6[i][j]=g5[i][j%96];
      		}
      	}
      	for(int i = 96; i < 192; i++)
      	{
      		for(int j = 0; j < 96; j++)
      		{
      			g6[i][j]=b5[i%96][j];
      			b6[i][j]=g5[i%96][j];
      		}
      	}
      	for(int i = 96; i < 192; i++)
      	{
      		for(int j = 96; j < 192; j++)
      		{
      			g6[i][j]=g5[i%96][j%96];
      			b6[i][j]=b5[i%96][j%96];
      		}
      	}
      }
      
      void h7()
      {
      	for(int i = 0; i < 192; i++)
      	{
      		for(int j = 0; j < 192; j++)
      		{
      			g7[i][j]=b6[i][j];
      			b7[i][j]=g6[i][j];
      		}
      	}
      	for(int i = 0; i < 192; i++)
      	{
      		for(int j = 192; j < 384; j++)
      		{
      			g7[i][j]=b6[i][j%192];
      			b7[i][j]=g6[i][j%192];
      		}
      	}
      	for(int i = 192; i < 384; i++)
      	{
      		for(int j = 0; j < 192; j++)
      		{
      			g7[i][j]=b6[i%192][j];
      			b7[i][j]=g6[i%192][j];
      		}
      	}
      	for(int i = 192; i < 384; i++)
      	{
      		for(int j = 192; j < 384; j++)
      		{
      			g7[i][j]=g6[i%192][j%192];
      			b7[i][j]=b6[i%192][j%192];
      		}
      	}
      }
      
      void h8()
      {
      	for(int i = 0; i < 384; i++)
      	{
      		for(int j = 0; j < 384; j++)
      		{
      			g8[i][j]=b7[i][j];
      			b8[i][j]=g7[i][j];
      		}
      	}
      	for(int i = 0; i < 384; i++)
      	{
      		for(int j = 384; j < 768; j++)
      		{
      			g8[i][j]=b7[i][j%384];
      			b8[i][j]=g7[i][j%384];
      		}
      	}
      	for(int i = 384; i < 768; i++)
      	{
      		for(int j = 0; j < 384; j++)
      		{
      			g8[i][j]=b7[i%384][j];
      			b8[i][j]=g7[i%384][j];
      		}
      	}
      	for(int i = 384; i < 768; i++)
      	{
      		for(int j = 384; j < 768; j++)
      		{
      			g8[i][j]=g7[i%384][j%384];
      			b8[i][j]=b7[i%384][j%384];
      		}
      	}
      }
      
      void h9()
      {
      	for(int i = 0; i < 768; i++)
      	{
      		for(int j = 0; j < 768; j++)
      		{
      			g9[i][j]=b8[i][j];
      			b9[i][j]=g8[i][j];
      		}
      	}
      	for(int i = 0; i < 768; i++)
      	{
      		for(int j = 768; j < 1536; j++)
      		{
      			g9[i][j]=b8[i][j%768];
      			b9[i][j]=g8[i][j%768];
      		}
      	}
      	for(int i = 768; i < 1536; i++)
      	{
      		for(int j = 0; j < 768; j++)
      		{
      			g9[i][j]=b8[i%768][j];
      			b9[i][j]=g8[i%768][j];
      		}
      	}
      	for(int i = 768; i < 1536; i++)
      	{
      		for(int j = 768; j < 1536; j++)
      		{
      			g9[i][j]=g8[i%768][j%768];
      			b9[i][j]=b8[i%768][j%768];
      		}
      	}
      }
      
      void hx()
      {
      	for(int i = 0; i < 1536; i++)
      	{
      		for(int j = 0; j < 1536; j++)
      		{
      			gx[i][j]=b9[i][j];
      		}
      	}
      	for(int i = 0; i < 1536; i++)
      	{
      		for(int j = 1536; j < 3072; j++)
      		{
      			gx[i][j]=b9[i][j%1536];
      		}
      	}
      	for(int i = 1536; i < 3072; i++)
      	{
      		for(int j = 0; j < 1536; j++)
      		{
      			gx[i][j]=b9[i%1536][j];
      		}
      	}
      	for(int i = 1536; i < 3072; i++)
      	{
      		for(int j = 1536; j < 3072; j++)
      		{
      			gx[i][j]=g9[i%1536][j%1536];
      		}
      	}
      }
      
      • 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;
        }
        
        • 1

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

        信息

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