题目链接

https://www.dotcpp.com/oj/problem1115.html

解题思路

瞎搞就行,但是我瞎搞了好久,才做出这个水题的,而且根本没注意到是大写X,wa了n次,看了看题解才发现是大写。
找规律的题。
我的思路:
分五部分输出,输出一行那种第一个x前没空格的行;输出上半部分除去首行和单独一个x的行剩下的行;输出单独的x行;输出下半部分除去尾行和单独一个x的行剩下的行;输出一行那种第一个x前没空格的行。
大佬思路:
分两部分输出,上半部分输出第1行第(a-1)/2行,下半部分输出第(a+1)/2行第a-1行,看看每一行第一个x前空格个数与行号的关系,看看每一行两个x之间空格个数与行号的关系,找到关系本题就完成一大半了。

我的AC代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a,b,n;
    cin>>n;
    while(n--){
        cin>>a>>b;
        int h=a-2;
        h/=2;

        cout<<'X';
        for(int i=1;i<=a-2;i++) cout<<' ';
        cout<<'X'<<endl;

        while(b--){
            for(int i=1;i<=h;i++){
                for(int j=1;j<=i;j++) cout<<' ';//before the first x
                cout<<'X';
                for(int j=1;j<=a-2-2*i;j++) cout<<' ';//between x and x
                cout<<'X'<<endl;
            }

            for(int i=1;i<=h+1;i++) cout<<' ';
            cout<<'X'<<endl;

            for(int i=h;i>=1;i--){
                for(int j=1;j<=i;j++) cout<<' ';//before the first x
                cout<<'X';
                for(int j=1;j<=a-2-2*i;j++) cout<<' ';//between x and x
                cout<<'X'<<endl;
            }    
            //end output
            cout<<'X';
            for(int i=1;i<=a-2;i++) cout<<' ';
            cout<<'X'<<endl;

        }
        cout<<endl;
    }
} 

大佬代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,a,b;
    cin>>n;
    while(n--){
        cin>>a>>b;
        while(b--){
            //上
            for(int i=1;i<=a/2;i++){
                for(int j=1;j<=a-i+1;j++)
                    if(i==j || j==a-i+1) cout<<'X';
                    else cout<<' ';    
                cout<<endl;        
            } 
            //下
            for(int i=1;i<=a/2;i++){
                for(int j=1;j<=a-i+1;j++)
                    if(j==a/2-i+2 || j==a/2+i) cout<<'X';
                    else cout<<' '; 
                cout<<endl;
            } 

        }
        cout<<'X';
        for(int i=1;i<=a-2;i++) cout<<' ';
        cout<<'X'<<endl<<endl;
    }
}

总结

脑子不好使,想的太慢,反应不过来。