算法学习初步

来源:互联网 发布:大连育知同创怎么样 编辑:程序博客网 时间:2024/05/17 18:03

输出三角形的各种方法,难度递增,思路越接近计算机结构化编程,有助于锻炼算法思维!



1.穷举。

  1. // n 是三角形边长
  2. void print_triangle int  
  3. {
  4.     // 依序穷举每一个位置,逐一判断要印什么。
  5.     for  ( int ;  ;  ++) 
  6.     {
  7.         for  ( int ;  ;  ++) 
  8.         {
  9.             if  (  +   <   -  )
  10.                 cout  <<  ' ' ;
  11.             else
  12.                 cout  <<  '@' ;
  13.         }
  14.         cout  <<  '\n' ;
  15.     }
  16. }

2.分割图形,分治法解决


  1. void print_triangle int  
  2. {
  3.     // 直角三角形分成多行
  4.     for  ( int ;  ;  ++) 
  5.     {
  6.         // 一行分成两阶段:空白、三角形
  7.         for  ( int ;  ;  ++)  cout  <<  ' ' 
  8.         for  ( int ;  ;  ++)  cout  <<  '@' 
  9.         cout  <<  '\n' ;
  10.     }
  11. }

3. 提取重复代码块为函数

  1. // 一行:i 是行数、n 是三角形边长
  2. void print_line int ,  int   
  3. {
  4.     // 一行分成两阶段:空白、三角形
  5.     for  ( int ;  ;  ++)  cout  <<  ' ' 
  6.     for  ( int ;  ;  ++)  cout  <<  '@' 
  7.     cout  <<  '\n' ;
  8. }
  9.  
  10. void print_triangle int  
  11. {
  12.     for  ( int ;  ;  ++) 
  13.         print_line ,  );
  14. }

5. 比较差异,提取参数

  1. // 一串:n 是长度、c 是字元
  2. void print_sequence int ,  char )   
  3. {
  4.     for  ( int ;  ; ++ )  cout  <<  
  5. }
  6.  
  7. // 一行:i 是行数、n 是三角形边长
  8. void print_line int ,  int   
  9. {
  10.     print_sequence ,  ' ' );
  11.     print_sequence     ,  '@' );
  12.     cout  <<  '\n' ;
  13. }
  14.  
  15. void print_triangle int  
  16. {
  17.     for  ( int ;  ;  ++) 
  18.         print_line ,  );
  19. }

6. 调整参数,便于阅读

  1. void print_sequence int ,  char   
  2. {
  3.     for  ( int ;  ; ++ )  cout  <<  
  4. }
  5.  
  6. // 一行:s 是空白长度、t 是符号长度(两者都是填充长度)
  7. void print_line int ,  int   
  8. {
  9.     print_sequence ,  ' ' );
  10.     print_sequence ,  '@' );
  11.     cout  <<  '\n' ;
  12. }
  13.  
  14. void print_triangle int  
  15. {
  16.     for  ( int ;  ;  ++) 
  17.         print_line ,  );
  18. }

经过这6步的改进,现在的算法重用性很高,经过简单的修改后就可以应对各种打印图形的题目了!


0 0
原创粉丝点击