#include <iostream.h>
#include <stdio.h>
#define M 20
char a[M][M];
int fuback(int k,int n,char u)
{
    int i;
    if(k==0) u='T';
    if(k==1) u='J';
        for(i=k;i<n;i++)
            {
                a[k][i]=u;
                a[i][k]=u;
                a[i][n-1]=u;
                a[n-1][i]=u;
            }
            if(k==1)u='0';
    if(k!=((M+1)/2)){fuback(k+1,n-1,u+1);} //无论奇偶都执行到最里面的k!=((M+1)/2);
    else return 0;
}
int main(int argc, char *argv[])
{
 char ut='0';//初始化字符变量,全靠它
    int nt=M;//宽度
    int kt=0;//表示由内到外的层数
    int h,j;
fuback(kt,nt,ut);//递归
    for(h=0;h<M;h++)
    {
        for(j=0;j<M;j++)
        {
            printf("%c",a[h][j]);
            printf("  ");
        }
        printf("\n");
    }
 return 0;
}

评论