巧妙打印对称图案
2014-04-06 15:33
274 查看
算法:
第一个的代码的思想是以前从网上看到的,原理很简单,就是利用高中数学中线性规划的知识; 第二个代码是利用图案的对称关系,其总共有5*2-1行,分析可知,每行的空格数量是:5-当前行数;每行的空格数量是:行数*2-1;下面最后4行的图案是根据上面4行的图案换算得来的。
运行效果1 运行效果2
第一个的代码的思想是以前从网上看到的,原理很简单,就是利用高中数学中线性规划的知识; 第二个代码是利用图案的对称关系,其总共有5*2-1行,分析可知,每行的空格数量是:5-当前行数;每行的空格数量是:行数*2-1;下面最后4行的图案是根据上面4行的图案换算得来的。
运行效果1 运行效果2
#include <iostream> #include <cmath> using namespace std; int main(void) { short int n; while(cin>>n) { for(int i=-n; i<=n; i++) { for(int j=-n; j<=n; j++) abs(i)+abs(j) >= n ? cout<<" " : cout<<"*"; cout<<endl;//可适当更改abs(i)+abs(j) 和 n的关系,比如>= } } return 0; }
#include <iostream> using namespace std; int main(void) { int n; //n代表要打印图案的行数(母图)h_1代表行数 h_2也是代表行数 l代表列数。 while(cin>>n) { for(int h_1=1,h_2=1; h_1<=2*n-1; h_1++) { if( h_1 > n) h_2 = 2*n - h_1; else h_2 = h_1; for(int l=n-h_2; l>=1; l--) cout<<" "; for(int l=1; l<=2*h_2-1; l++) cout<<"*"; cout<<endl; } } return 0; }
相关文章推荐
- Android 音乐播放器实现歌词显示
- Enhancing custom classes 优化自定义类
- 不容易系列之一
- 半透明AlphaBlend
- 线上团队项目管理工具
- AndroidAnnotations——Enhance Fragments 优化Fragments
- STM32的函数ssert_param(IS_GPIO_ALL_PERIPH(GPIOx));
- Samza文档翻译 : Architecture
- java基础15
- AndroidAnnotations——Enhance activities 优化Activities
- 超级楼梯
- 自定义 UITableViewCell 的 accessory 样式
- Python 字典排序
- 运行Mahout分类算法,分析20newsgroup的分类过程
- AndroidAnnotations——Annotation recipes 注解使用方法
- Java中的System类
- AndroidAnnotations——How It Works,AndroidAnnotation是如何工作的
- 母牛的故事
- iPhone/iPad高级应用与手游开发学习笔记:sqlite3学习(简单英文生词本demo)
- svn标准目录结构解说