【UOJ 222】正方形二分型

【题目描述】:

下面这个图形是不是很熟悉,对同学们在学LOGO语言时,用海龟画过类似的图形,现在你能用C语言画出来吗?

 N=1              N=2
* * *      * * *       * * *
*   *      *   *       *   *
* * *      * * *       * * *
           * * * * * *
           *         *
           *         *
           *         *
           *         *
           * * * * * *

                   N=3
* * *       * * *       * * *       * * *
*   *       *   *       *   *       *   *
* * *       * * *       * * *       * * *
* * * * * *             * * * * * *
*         *             *         *
*         *             *         *
*         *             *         *
*         *             *         *
* * * * * *             * * * * * *
* * * * * * * * * * * *
*                     *
*                     *
*                     *
*                     *
*                     *
*                     *
*                     *
*                     *
*                     *
*                     *
* * * * * * * * * * * *

【输入描述】:

输入一个正整数N;

【输出描述】:

输出正方形的N层二分形,行末没有多余空格。

【样例输入】:

2

【样例输出】:

* * *       * * *
*   *       *   *
* * *       * * *
* * * * * *
*         *
*         *
*         *
*         *
* * * * * *

【时间限制、数据范围及描述】:

时间:1s 空间:64M

N<=9

题解:模拟大法好(?)网站测100,老师机器lemon测80 ,原封不动的代码,吐了。。。

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int n;
int main(){
    freopen("twopart.in","r",stdin);
    freopen("twopart.out","w",stdout);
    scanf("%d",&n);
    for(int i=1,j=n;i<=n;i++,j--){
        int t=pow(2,j-1);//这一行有t个正方形 
        int l=3*pow(2,i-1);//每个正方形的边长 
        
        for(int jj=1;jj<t;jj++){
            for(int k=1;k<=l;k++) printf("* ");
            for(int k=1;k<=l;k++) printf("  ");
        }
        for(int k=1;k<l;k++) printf("* "); printf("*");
        printf("
"); //第一排
         
        for(int h=2;h<l;h++){
            for(int jj=1;jj<t;jj++){
                printf("*");
                for(int k=2;k<l;k++) printf("  ");
                printf(" * ");
                for(int k=1;k<=l;k++) printf("  ");
            }
            printf("*");
            for(int k=2;k<l;k++) printf("  ");
            printf(" *
");
            
        } // 第2~n-1排 
        
        for(int jj=1;jj<t;jj++){
            for(int k=1;k<=l;k++) printf("* ");
            for(int k=1;k<=l;k++) printf("  ");
        }
        for(int k=1;k<l;k++) printf("* "); printf("*");
        printf("
"); //第n排
        
    }
    return 0;
}
原文地址:https://www.cnblogs.com/wuhu-JJJ/p/13767792.html