HPU第四次积分赛-K :方框(水题,打印图形)
方框
描述
用'*'打印出一个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;
}
HPU第四次积分赛-K :方框(水题,打印图形)的更多相关文章
- HPU第四次积分赛-L:A Winged Steed(完全背包)
A Winged Steed 描述 有n种千里马,每一种都有若干匹,第i种马的颜值ai,价格di.现有m个牧马人要去挑选千里马,每一位牧马人对马的颜值都有要求:{所选马的颜值总和} ⩾Ai.现在 ...
- HPU 第三次积分赛:阶乘之和(水题)
阶乘之和 描述 对于整数pp,给出以下定义 p=x_{1}!+x_{2}!+x_{3}!+...+x_{q}!(x_{i}<x_{j}for\ all\ i<j )p=x1!+x2!+ ...
- CF451C Predict Outcome of the Game 水题
Codeforces Round #258 (Div. 2) Predict Outcome of the Game C. Predict Outcome of the Game time limit ...
- 没讲明白的水题orz
有一道解释程序的水题没给非计算机专业的同学讲明白orz,在这里再练一下.. 源代码完全没有缩进真是难以忍受.. p.s.懂递归就不用看了#include <stdio.h> int n = ...
- POJ 水题(刷题)进阶
转载请注明出处:優YoU http://blog.csdn.net/lyy289065406/article/details/6642573 部分解题报告添加新内容,除了原有的"大致题意&q ...
- Atcoder 水题选做
为什么是水题选做呢?因为我只会水题啊 ( 为什么是$Atcoder$呢?因为暑假学长来讲课的时候讲了三件事:不要用洛谷,不要用dev-c++,不要用单步调试.$bzoj$太难了,$Topcoder$整 ...
- HDU - 1716 排列2 水题
排列2 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- hdu 2025:查找最大元素(水题,顺序查找)
查找最大元素 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- #82. 【UR #7】水题生成器
链接:http://uoj.ac/problem/82 今天是世界水日,著名的水题资源专家蝈蝈大臣向世界宣布了他的一项新发明 —— 水题生成器. 每道题目都有一个正整数的难度值.水题生成器虽然强大但是 ...
随机推荐
- astah-professional-7_2_0安装
astah-professional-7_2_0-1安装 1● 下载文件 2● 安装 replace D:\Program\astahprofessional\inst\astah-p ...
- Win10系列:UWP界面布局进阶6
在Windows 10的"个性化设置"中,用户可以更改计算机在锁屏状态下的背景图片,除此之外,也可以通过Windows应用商店应用程序将喜欢的图片设置为锁屏背景,下面通过一个示例来 ...
- 每天CSS学习之transform-origin
在上一篇中,我们学习了如何使用transform来进行2D变形.今天要讲述的transform-origin与这个变形有关. origin翻译过来的意思是原点.开端.transform-origin寓 ...
- C语言转义字符'\'
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- vue-9-动画
transition: <div id="demo"> <button v-on:click="show = !show"> Toggl ...
- 在JS文件中,不需要<script>标签
在JS文件中,不需要<script>标签\
- maven3.5.0在win10中的安装及环境变量配置
1.maven的下载地址http://maven.apache.org/download.cgi.如下图,下载apache-maven-3.5.0-bin.zip 2.解压缩到自己指定的文件下,mav ...
- Java类库和常用类库介绍
Java 类库概念: Java 的应用程序接口 (API) 以包的形式来组织,每个包提供了大量的相关类.接口和异常处理类,这些包的集合就是 Java 的类库 包名以 Java 开始的包是 Java 核 ...
- Oracle function和procedure
1.返回值的区别 函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有 2. 调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用. 函数:一般情况下是用来计算并返回一个计算结 ...
- linux系统中对SSD硬盘优化的方法
在测试虚拟机往分布式存储中写数据的最大性能时,做的一些系统修改 1.ext4文件系统在SSD硬盘是最快的 2.查看当前系统支持的IO调度算法 dmesg | grep -i scheduler 3.查 ...