算法学习初步
来源:互联网 发布:大连育知同创怎么样 编辑:程序博客网 时间:2024/05/17 18:03
输出三角形的各种方法,难度递增,思路越接近计算机结构化编程,有助于锻炼算法思维!
1.穷举。
- // n 是三角形边长
- void print_triangle ( int n )
- {
- // 依序穷举每一个位置,逐一判断要印什么。
- for ( int i = 0 ; i < n ; i ++)
- {
- for ( int j = 0 ; j < n ; j ++)
- {
- if ( i + j < n - 1 )
- cout << ' ' ;
- else
- cout << '@' ;
- }
- cout << '\n' ;
- }
- }
- void print_triangle ( int n )
- {
- // 直角三角形分成多行
- for ( int i = 0 ; i < n ; i ++)
- {
- // 一行分成两阶段:空白、三角形
- for ( int j = 0 ; j < n - i - 1 ; j ++) cout << ' ' ;
- for ( int j = n - i - 1 ; j < n ; j ++) cout << '@' ;
- cout << '\n' ;
- }
- }
3. 提取重复代码块为函数
- // 一行:i 是行数、n 是三角形边长
- void print_line ( int i , int n )
- {
- // 一行分成两阶段:空白、三角形
- for ( int j = 0 ; j < n - i - 1 ; j ++) cout << ' ' ;
- for ( int j = n - i - 1 ; j < n ; j ++) cout << '@' ;
- cout << '\n' ;
- }
- void print_triangle ( int n )
- {
- for ( int i = 0 ; i < n ; i ++)
- print_line ( i , n );
- }
5. 比较差异,提取参数
- // 一串:n 是长度、c 是字元
- void print_sequence ( int n , char c )
- {
- for ( int i = 0 ; i < n ; ++ i ) cout << c ;
- }
- // 一行:i 是行数、n 是三角形边长
- void print_line ( int i , int n )
- {
- print_sequence ( n - i - 1 , ' ' );
- print_sequence ( i , '@' );
- cout << '\n' ;
- }
- void print_triangle ( int n )
- {
- for ( int i = 0 ; i < n ; i ++)
- print_line ( i , n );
- }
6. 调整参数,便于阅读
- void print_sequence ( int n , char c )
- {
- for ( int i = 0 ; i < n ; ++ i ) cout << c ;
- }
- // 一行:s 是空白长度、t 是符号长度(两者都是填充长度)
- void print_line ( int s , int t )
- {
- print_sequence ( s , ' ' );
- print_sequence ( t , '@' );
- cout << '\n' ;
- }
- void print_triangle ( int n )
- {
- for ( int i = 0 ; i < n ; i ++)
- print_line ( i , n - i - 1 );
- }
经过这6步的改进,现在的算法重用性很高,经过简单的修改后就可以应对各种打印图形的题目了!
0 0
- 初步学习KMP算法
- KMP算法初步学习
- 算法学习初步
- 折半查找算法学习初步
- Fcm算法初步学习探索
- 递归与分治算法初步学习
- 感知机学习算法初步1
- 遗传算法的初步学习(一)
- 《算法初步》
- 初步学习
- 初步学习
- 基于opencv的meanshift算法的初步学习
- 机器学习与数据挖掘基本算法初步介绍
- 单源最短路径dijkstra算法的初步学习(1)
- 【算法学习笔记】05.qsort的初步应用
- 【算法学习笔记】06.数据结构基础 队列与堆栈初步
- 【算法学习笔记】07.数据结构基础 链表 初步练习
- 【算法学习笔记】12.数据结构基础 图的初步1
- 递推递归练习 E题
- 自己实现Struts2(六)实现参数拦截器并调试框架
- 2017.3.26
- 两种方法实现MFC 对话框最大化时控件也随比例最大化或者还原
- 站内全文搜索引擎 Sphinx/coreseek 安装使用教程
- 算法学习初步
- 校招模拟 [编程题]页码统计
- Ubuntu14.04下配置eclipse运行ns3
- L2-017. 人以群分(2017初赛)
- 汇编--8 转移指令的原理
- 数据挖掘算法之深入朴素贝叶斯分类
- 使用3dsMaxSDK重写Execute函数达到简单反混淆
- fragment的管理
- Linux下摄像头+OpenCV+zbar的编译+例程