方框

描述

用'*'打印出一个nxn的字符图形(1<=n<=100).

输入

多组输入。每行输入一个n,输入EOF结束文件.

输出

输出一个满足题意的图形.

输入样例 1 

1
2
5
6
10
11

输出样例 1

*
**
**
*****
* *
* * *
* *
*****
******
* *
* ** *
* ** *
* *
******
**********
* *
* ****** *
* * * *
* * ** * *
* * ** * *
* * * *
* ****** *
* *
**********
***********
* *
* ******* *
* * * *
* * *** * *
* * * * * *
* * *** * *
* * * *
* ******* *
* *
***********

思路

就是按照给出的样例找规律,然后n*n的图形

可以明显的看出,这个图形的特点是一圈被全是*,一圈全是空白。发现了这个规律的话可以用模拟来做(学长和一些用模拟AC的大佬说的,但是感觉模拟好麻烦,不太好写)

再仔细观察可以发现:这个图形是个对称的(废话)。然后从第三行开始往后,每一行都是根据上上一行的字符串复制过来,然后将上上一行的连在一起的空格或者*的第二个和倒数第二个给改变(*变成空格,空格变成*)。最后输出的时候判断奇偶,对称输出就可以了

AC代码

#include<bits/stdc++.h>
#define ll long long
#define ms(a) memset(a,0,sizeof(a))
using namespace std;
const int maxn=1e6+10;
char ch[110][110];
int main()
{
ios::sync_with_stdio(false);
int n;
while(cin>>n)
{
if(n==1)
{
cout<<"*"<<endl;
continue;
}
if(n==2)
{
for(int i=1;i<=2;i++)
cout<<"**"<<endl;
continue;
}
ms(ch);
int res=(n+1)/2;
int cnt=2;
for(int i=1;i<=res;i++)
{
if(i==1)
{
for(int j=1;j<=n;j++)
ch[i][j]='*';
}
if(i==2)
{
ch[i][1]='*';
ch[i][n]='*';
for(int j=2;j<n;j++)
ch[i][j]=' ';
}
if(i>2&&i%2)
{
// 本来是用strcmp来复制的,但是好像二维的字符串函数不能用,复制出来的全是空行
for(int k=1;k<=n;k++)
{
ch[i][k]=ch[i-2][k];
}
ch[i][cnt]=' ';
ch[i][n-cnt+1]=' ';
cnt++;
}
if(i>2&&i%2==0)
{
for(int k=1;k<=n;k++)
{
ch[i][k]=ch[i-2][k];
}
ch[i][cnt]='*';
ch[i][n-cnt+1]='*';
cnt++;
}
}
for(int i=1;i<=res;i++)
{
for(int j=1;j<=n;j++)
cout<<ch[i][j];
cout<<endl;
}
if(n%2)
{
for(int i=res-1;i>=1;i--)
{
for(int j=1;j<=n;j++)
cout<<ch[i][j];
cout<<endl;
}
}
else
{
for(int i=res;i>=1;i--)
{
for(int j=1;j<=n;j++)
cout<<ch[i][j];
cout<<endl;
}
}
}
return 0;
}

最新文章

  1. 黑马程序员:Java编程_基础语法
  2. JAVA中类、实例与Class对象
  3. webstrom 中启用emmet插件的方法
  4. Win Mingw-64获取
  5. Java中的栈:java.util.Stack类
  6. poj 2135 Farm Tour 最小费用最大流建图跑最短路
  7. jbpm6 开发环境搭建
  8. Java实现KMP算法
  9. Webform Lable
  10. SQL Server索引进阶第十一篇:索引碎片分析与解决
  11. Log4net 自定义字段到数据库
  12. 使2个div 在一行上显示
  13. IOS中的JSON数据的解析
  14. c#委托中的同步和异步方法即BeginInvoke和EndInvoke
  15. 使用Roslyn编译项目的示例
  16. 关于MySQL什么时候使用索引问题以及什么情况下应不建或少建索引
  17. django-枚举类型扩展方法
  18. redis 五种数据类型
  19. NSString 属性为啥用copy 不用strong
  20. 20155233 2016-2017-2 《Java程序设计》第9周学习总结

热门文章

  1. js地址多选实现,居住地,户口,职业,行业多选2
  2. OO第一阶段总(休)结(养)分(生)析(息)
  3. sass 继承 占位符 %placeholder
  4. Myeclipse代码格式化
  5. tfs 2017 使用
  6. Zynq-PL中创建AXI Master接口IP及AXI4-Lite总线主从读写时序测试(转)
  7. CentOS7安装cratedb
  8. 玩转X-CTR100 l STM32F4 l NRF24L01+ 2.4G无线通信
  9. 自动化测试工具Telerik Test Studio发布R1 2019|附下载
  10. ReentrantReadWriteLock