Mogic 题解源代码
来源:互联网 发布:淘宝经营人贷款条件 编辑:程序博客网 时间:2024/06/17 19:22
Description
霍格兹茨膜法学校的学生蛤利·波特厌倦了平静的生活,在一次闲逛中,他发现了一本老旧的日记,日记中详细记载了伏地膜早年在校期间所研究的种种密术。其中,一种被称为「时间膜法」的密术吸引了蛤利的注意,这种密术需要使用者发动膜法阵来启用,以换取少得可怜的几乎只能以秒计算的时间转移效果。发动膜法阵时,施法者需要构建一个六芒星阵才能发动。
悲剧的是,蛤利并不会画六芒星,所以他只能求助于你,你能帮助他成功发动膜法吗?
Input
输入包含多组数据(数据组数不超过 10),到 EOF 结束。
每组输入包含一行,为一个整数 n (3 <= n <= 10),代表六芒星的 六个角上的正三角形 及 中心正六边形 的边长 (边上星号的个数)。
Output
对于每组输入,输出对应大小的膜法阵图案,每组输出后面跟一行空行,详细输出格式参见示例。
六芒星图案中,每行输出的末尾都是星号,后面没有多余的空格。
Sample Input
34
Sample Output
* * ** * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * *
Hint
请细心观察示例,数清每一行星号和空格的数量关系即可。一行上连续的星号之间可能存在空格。
这个题目不知道难度如何,但是还是比较费时间的,当初我想到上下对称,却没有利用左右对称,如果再利用左右对称的话,那么会更加方便一些,话不多说了,直接上代码。
#include<iostream>using namespace std;#include<stdio.h>int main(){ int n; while(scanf("%d",&n)==1) { int dai=6*n-5; for(int i=1;i<=2*n-1;i++)//行数 { for(int j=1;j<=dai;j++)//这个就是每一列 { if(i<n) { if(j==(dai)/2+1-i+1||j==(dai)/2+1+i-1) { printf("*"); } else printf(" "); if(j==(dai)/2+1+i-1) { printf("\n"); break; } } else if(i==n) { if(j==(dai)/2+1-i+1||j==(dai)/2+1+i-1)//代表是中间的哪一些 { printf("*"); } else if(j>=1+(i-n)&&(j+i-n)%2!=0)//全部都输出 printf("*"); else printf(" "); if(j==dai-(i-n)) { printf("\n"); break; } } else if(i>n) { if(j==(dai)/2+1-i+1||j==(dai)/2+1+i-1)//代表是中间的哪一些 { printf("*"); } else if(j==1+(i-n)||j==(2*n-1-(i-n))||j==(6*n-5-(2*n-2)+(i-n))||j==(dai-(i-n))) { printf("*"); } else printf(" "); if(j==dai-(i-n)) { printf("\n"); break; } } } } for(int i=2*n-2;i>=1;i--)//行数 { for(int j=1;j<=dai;j++)//这个就是每一列 { if(i<n) { if(j==(dai)/2+1-i+1||j==(dai)/2+1+i-1) { printf("*"); } else printf(" "); if(j==(dai)/2+1+i-1) { printf("\n"); break; } } else if(i==n) { if(j==(dai)/2+1-i+1||j==(dai)/2+1+i-1)//代表是中间的哪一些 { printf("*"); } else if(j>=1+(i-n)&&(j+i-n)%2!=0)//全部都输出 printf("*"); else printf(" "); if(j==dai-(i-n)) { printf("\n"); break; } } else if(i>n) { if(j==(dai)/2+1-i+1||j==(dai)/2+1+i-1)//代表是中间的哪一些 { printf("*"); } else if((j+i-n)%2!=0&&(j==1+(i-n)||j==(2*n-1-(i-n))||j==(6*n-5-(2*n-2)+(i-n))||j==(dai-(i-n)))) { printf("*"); } else printf(" "); if(j==dai-(i-n)) { printf("\n"); break; } } } } printf("\n"); }}
1 0
- Mogic 题解源代码
- Mogic(打印六芒星)
- USACO题解源代码
- foj 1844 题解题报告 + 源代码
- 一道C语言笔试题解析,检查源代码中的错误
- 题解
- 题解
- 题解
- 题解
- 题解
- 题解
- 题解
- 题解
- 题解
- 题解
- 题解
- 题解~~~~
- 题解。。。。
- 实现页面实时显示当前时间 js
- Linux常用命令
- codeforces/contest/797/problem/E
- 阿里巴巴集团2017暑期实习生在线编程测试题分析-Java研发工程师(二叉树求路径和)
- IMWeb训练营作业-完成第一个组件select下拉框组件
- Mogic 题解源代码
- 什么一个Java源文件中只能有一个public类?
- 当按钮点击之后出现边框的问题
- Docker + Nodejs + Kafka + Redis + MySQL搭建简单秒杀环境
- 【疑问&感受】初见指针——当函数遇到指针
- 解决Eclipse使用Maven下载慢的问题
- 关于c++多态性实现的理解过程(给自己看的总结,比较跳跃)
- Uva.10474 Where is the Marble?
- 利用向量积(叉积)计算三角形的面积和多边形的面积