A30212题解
2026-07-15 12:53:48
发布于:浙江
28阅读
0回复
0点赞
背景:
原题链接
就我一个人是写正解的吗(只统计对的)?其他显示“已通过”的人都是输出样例的吗?虽然过于复杂
有大佬能给点意见和更好的思路吗?
思路:
分别模拟上半部分和下半部分每一行输出空格数和输出的位置,用合适的变量统计输出空格数和数。
代码(懒得写注释了):
#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
while (n--){
int a,b;
cin>>a>>b;
int f=0,l=a-2,f2=0;
for (int i=1;i<=a/2;i++){
for (int j=1;j<=f;j++){
cout<<" ";
}
f++;
cout<<"X";
for (int i=1;i<=l;i++){
cout<<" ";
}
l-=2;
cout<<"X";
for (int j=1;j<=f2;j++){
cout<<" ";
}
f2++;
cout<<endl;
}
for (int i=1;i<=a/2;i++){
cout<<" ";
}
cout<<"X";
for (int i=1;i<=a/2;i++){
cout<<" ";
}
cout<<endl;
f=a/2-1,l=1,f2=a/2-1;
for (int i=1;i<=a/2;i++){
for (int j=1;j<=f;j++){
cout<<" ";
}
f--;
cout<<"X";
for (int i=1;i<=l;i++){
cout<<" ";
}
l+=2;
cout<<"X";
for (int j=1;j<=f2;j++){
cout<<" ";
}
f2--;
cout<<endl;
}
for (int i=1;i<b;i++){
int f=1,l=a-4,f2=1;
for (int i=1;i<=a/2-1;i++){
for (int j=1;j<=f;j++){
cout<<" ";
}
f++;
cout<<"X";
for (int i=1;i<=l;i++){
cout<<" ";
}
l-=2;
cout<<"X";
for (int j=1;j<=f2;j++){
cout<<" ";
}
f2++;
cout<<endl;
}
for (int i=1;i<=a/2;i++){
cout<<" ";
}
cout<<"X";
for (int i=1;i<=a/2;i++){
cout<<" ";
}
cout<<endl;
f=a/2-1,l=1,f2=a/2-1;
for (int i=1;i<=a/2;i++){
for (int j=1;j<=f;j++){
cout<<" ";
}
f--;
cout<<"X";
for (int i=1;i<=l;i++){
cout<<" ";
}
l+=2;
cout<<"X";
for (int j=1;j<=f2;j++){
cout<<" ";
}
f2--;
cout<<endl;
}
}
cout<<endl;
}
return 0;
}
希望对大家学习OI有帮助!
全部评论 1
厉害!
2025-08-21 来自 浙江
1









有帮助,赞一个