[HDU2565]解题报告

每天一篇结题报告计划(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在这里)
也没什么好bb的,直接放代码了
#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;//样例间的空行
	}

} 



原文地址:https://www.cnblogs.com/sherrlock/p/9525800.html