题目 1115: DNA

又是图形输出题。

找规律代码如下。

int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        int a,b;
        cin>>a>>b;
        for(int k=0;k<b;k++)
        {
            for(int i=0;i<a/2;i++)
            {
                for(int j=0;j<i;j++) cout<<' ';
                cout<<'X';
                for(int j=0;j<a-2*(i+1);j++) cout<<' ';
                cout<<'X';
                cout<<endl;
            }

            for(int i=0;i<a/2;i++) cout<<' ';
            cout<<'X';
            cout<<endl;

            for(int i=0;i<a/2-1;i++)
            {
                for(int j=0;j<a-2*(i+2);j++) cout<<' ';
                cout<<'X';
                for(int j=0;j<i*2+1;j++) cout<<' ';
                cout<<'X';
                cout<<endl;
            }
        }
        cout<<'X';
        for(int i=0;i<a-2;i++) cout<<' ';
        cout<<'X';
        cout<<endl<<endl;
    }
    //system("pause");
    return 0;
}

观察到字符全在对角线上的特殊性质,简化代码如下。

const int N=40;
char s[N];

int main()
{
    for(int i=0;i<N;i++) s[i]=' ';

    int T;
    cin>>T;
    while(T--)
    {
        int n,m;
        cin>>n>>m;

        for(int k=0;k<m;k++)
        {
            for(int i=0;i<n-1;i++)
            {
                s[i]=s[n-1-i]='X';
                s[n]='';
                puts(s);
                s[i]=s[n-1-i]=' ';
                s[n]=' ';
            }
        }

        s[0]=s[n-1]='X';
        s[n]='';
        puts(s);
        s[0]=s[n-1]=' ';
        s[n]=' ';
        puts("");
    }
    //system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/fxh0707/p/14617257.html