每天一篇结题报告计划(1/∞)
oi有句古话叫:打表是实力,暴力出奇迹。
今天的解题报告是一道暴力打表题,嗯
题目是HDU2565
放大的X
请你编程画一个放大的’X’。
如3*3的’X’应如下所示:
X X
X
X X
5*5的’X’如下所示:
X X
X X
X
X X
X X
input
输入数据第一行是一个整数T,表示有T组测试数据;
接下来有T行,每行有一个正奇数n(3 <= n <= 79),表示放大的规格。
output
对于每一个n打印一个规格为n * n放大的’X’;每组输出后面空一行。
sample input
2 3 5
sample out put
X X X X X X X X X X X X X X
我们把x分成上,中,下三部分,
上部分就是有两条的部分,中只有一个x,就是x的两条线的交点,下部分野是有两条线的部分
这道题要考虑很多细节的处理,控制场宽,因为hdu是acm制,要注意每个样例之间有空行(第一次就wa在这里)
#include<iostream>
using namespace std;
int main()
{
int text;
int N;
cin>>text;
while(text--)
{
cin>>N;
for(int i=N-2;i>=0;i-=2)
{
//cout<<" i: "<<i<<endl;
for(int j=1;j<(N-i)/2;j++)
cout<<" ";
cout<<"X";
for(int j=i;j>0;j--)
cout<<" ";
cout<<"X";
cout<<endl;
}//输出上半部分的“X”
for(int i=1;i<=N/2;i++)
cout<<" ";
cout<<"X"<<endl;//中间的‘X’
for(int i=0;i<=N-2;i+=2)//下半部分的‘x’
{
//cout<<i<<endl;
for(int j=1;j<(N-i)/2;j++)
cout<<" ";
cout<<"X";
for(int j=i;j>=0;j--)
cout<<" ";
cout<<"X";
}
cout<<endl;//样例间的空行
}
}