假设有一个m*n行列的一个行列信息。每一个单元块又变成a*b行列信息。例如原来是3*3,每一个小块又是3*3
如图
原来
*    *    *
*    *    *
*    *    *
变后
***      ***     ***
***      ***     ***
***      ***     ******      ***     ***
***      ***     ***
***      ***     ******      ***     ***
***      ***     ***
***      ***     ***

解决方案 »

  1.   

    仅供参考://输入1
    //输出
    //* *
    // *
    //* *
    //输入2
    //输出
    //* *   * *
    // *     *
    //* *   * *
    //   * *
    //    *
    //   * *
    //* *   * *
    // *     *
    //* *   * *
    //输入3
    //输出
    //* *   * *         * *   * *
    // *     *           *     *
    //* *   * *         * *   * *
    //   * *               * *
    //    *                 *
    //   * *               * *
    //* *   * *         * *   * *
    // *     *           *     *
    //* *   * *         * *   * *
    //         * *   * *
    //          *     *
    //         * *   * *
    //            * *
    //             *
    //            * *
    //         * *   * *
    //          *     *
    //         * *   * *
    //* *   * *         * *   * *
    // *     *           *     *
    //* *   * *         * *   * *
    //   * *               * *
    //    *                 *
    //   * *               * *
    //* *   * *         * *   * *
    // *     *           *     *
    //* *   * *         * *   * *
    //最大输入8
    #include <stdio.h>
    char m[6561][6561];//==3^8
    void fractalx(int cy,int cx,int L) {
        int N,i;    if (1==L) {
            m[cy  ][cx  ]='*';
            m[cy-1][cx-1]='*';
            m[cy-1][cx+1]='*';
            m[cy+1][cx+1]='*';
            m[cy+1][cx-1]='*';
        } else {
            N=1;for (i=0;i<L-1;i++) N=N*3;
            fractalx(cy  ,cx  ,L-1);
            fractalx(cy-N,cx-N,L-1);
            fractalx(cy-N,cx+N,L-1);
            fractalx(cy+N,cx+N,L-1);
            fractalx(cy+N,cx-N,L-1);
        }
    }
    int main() {
        int L,N,i,y,x;    while (1) {
            while (1) {
                printf("\nInput 1..8,0 for Exit:");
                fflush(stdout);
                if (1==scanf("%d",&L)) {
                    if (0<=L && L<=8) break;
                } else rewind(stdin);
            }
            if (0==L) break;
            N=1;for (i=0;i<L;i++) N=N*3;
            for (y=3280-(N-1)/2;y<=3280+(N-1)/2;y++) {
                for (x=3280-(N-1)/2;x<=3280+(N-1)/2;x++) {
                    m[y][x]=' ';
                }
            }
            fractalx(3280,3280,L);
            for (y=3280-(N-1)/2;y<=3280+(N-1)/2;y++) {
                for (x=3280-(N-1)/2;x<=3280+(N-1)/2;x++) {
                    printf("%c",m[y][x]);
                }
                printf("\n");
            }
        }
        return 0;
    }