1.4常数变易法

常数变异的思考方法

当程序中有许多因素都在变动的时候,我们可以假设其中的某些变数为常数,把他们写成固定的死值。

将来再用变量替换。

星号金字塔

常数变异典型应用

打印这个金字塔:

*

* *

* * *

* * * *

* * * * *

正常的思路:两层嵌套循环。

/*** ** * ** * * ** * * * *
*/
package ConstantChange;public class PrintPyramid {public static void main(String[] args) {/*System.out.println("          *");System.out.println("        * *");System.out.println("       * * *");
//     System.out.println("     * * * *");
//     System.out.println("     * * * * *");for(int i=0;i<17;i++){System.out.print(" ");}for(int i=0;i<4;i++){System.out.print("* ");}System.out.println();for(int i=0;i<16;i++){System.out.print(" ");}for(int i=0;i<5;i++){System.out.print("* ");}System.out.println();*///尝试写双层循环,代替上述的这种写5次的三行循环。//k  0  1  2  3  4   【k】//? 20 19 18 17 16 【20-k】//?? 1  2  3  4  5   【k+1】for(int k=0;k<5;k++){for(int i=0;i<20-k;i++){System.out.print(" ");}for(int i=0;i<k+1;i++){System.out.print("* ");}System.out.println();}}
}
                    ** ** * ** * * ** * * * *

字母金字塔

A

ABA

ABCBA

ABCDCBA

ABCDEDCBA

/*AABAABCBAABCDCBAABCDEDCBA*/
package ConstantChange;public class LetterPyramid {public static void main(String[] args) {
/*//       "     ABCDCBA"for(int i=0;i<5;i++){System.out.print(" ");}for(int i=0;i<4;i++){
//         System.out.print('A');//常数变异法,这里本应是变动的,先用常数代替System.out.print((char)('A'+i));//输出ABCDE,强制转换ASCII码}for(int i=3-1;i>=0;i--){System.out.print((char)('A'+i));}System.out.println();
//     "    ABCDEDCBA"for(int i=0;i<4;i++){System.out.print(" ");}for(int i=0;i<5;i++){
//         System.out.print('A');//常数变异法,这里本应是变动的,先用常数代替System.out.print((char)('A'+i));//输出ABCDE,强制转换ASCII码}for(int i=4-1;i>=0;i--){System.out.print((char)('A'+i));}System.out.println();*///k   //?    9-k//??   k//???  k-2for(int k=1;k<5;k++){for(int i=0;i<9-k;i++){System.out.print(" ");}for(int i=0;i<k;i++){System.out.print((char)('A'+i));//输出ABCDE,强制转换ASCII码}for(int i=k-2;i>=0;i--){System.out.print((char)('A'+i));}System.out.println();}}
}
        AABAABCBAABCDCBA

当变成逐渐熟练之后,常数变异法可能是我们最常用的方法。

打印图形X

试打印出如下图形:

$$         $$

$$        $$

$$      $$

$$    $$

$$ $$

$$$$

$$

$$$$

$$ $$

$$    $$

$$      $$

$$        $$

$$         $$

注意规模可以调整

/** 打印图形试打印出如下图形:$$          $$$$        $$$$      $$$$    $$   $$  $$    $$$$   $$      $$$$   $$  $$    $$    $$  $$      $$ $$        $$$$          $$注意规模可以调整
*/
package ConstantChange;public class PrintX {public static void main(String[] args) {/*//" $$          $$ "for(int i=0;i<1;i++) System.out.print(" ");for(int i=0;i<2;i++) System.out.print("$");for(int i=0;i<10;i++) System.out.print(" ");for(int i=0;i<2;i++) System.out.print("$");for(int i=0;i<1;i++) System.out.print(" ");System.out.println();//"  $$        $$  "for(int i=0;i<2;i++) System.out.print(" ");for(int i=0;i<2;i++) System.out.print("$");for(int i=0;i<8;i++) System.out.print(" ");for(int i=0;i<2;i++) System.out.print("$");for(int i=0;i<2;i++) System.out.print(" ");System.out.println();*/int LINE = 13;//由于图形的对称性,输入偶数行时,做出的图形+1行int n = LINE/2;for(int k=0;k<n;k++){for(int i=0;i<k+1;i++) System.out.print(" ");System.out.print("$$");for(int i=0;i<LINE-3-2*k;i++) System.out.print(" ");System.out.print("$$");for(int i=0;i<k+1;i++) System.out.print(" ");System.out.println();}for(int i=0;i<n+1;i++) System.out.print(" ");System.out.print("$$");for(int i=0;i<n+1;i++) System.out.print(" ");System.out.println();for(int k=n-1;k>=0;k--){for(int i=0;i<k+1;i++) System.out.print(" ");System.out.print("$$");for(int i=0;i<LINE-3-2*k;i++) System.out.print(" ");System.out.print("$$");for(int i=0;i<k+1;i++) System.out.print(" ");System.out.println();}}
}
 $$          $$$$        $$ $$      $$  $$    $$    $$  $$    $$$$     $$      $$$$     $$  $$    $$    $$   $$      $$  $$        $$ $$          $$

编程算法基础-常数变易法相关推荐

  1. Python3算法基础练习:编程100例( 21~ 25)

    往期练习: Python3算法基础练习:编程100例(1~5) Python3算法基础练习:编程100例(6 ~ 10) Python3算法基础练习:编程100例(11 ~ 15) Python3算法 ...

  2. Python3算法基础练习:编程100例(11 ~ 15)

    往期练习: Python3算法基础练习:编程100例(1~5) Python3算法基础练习:编程100例(6 ~ 10) Python3算法基础练习:编程100例(11 ~ 15) 11.兔子问题 1 ...

  3. Python3算法基础练习:编程100例( 31 ~ 35 )

    上期文章: Python3算法基础练习:编程100例( 26 ~ 30) 目录 31 判断星期几 32 反序输出列表 33 分隔列表 34 函数调用 35 文本加颜色 31 判断星期几 题目:请输入星 ...

  4. Python3算法基础练习:编程100例( 26 ~ 30)

    上期文章: Python3算法基础练习:编程100例( 21~ 25) 目录 26 递归求 20! 的阶乘 27 字符串反转 28 猜岁数 29 整数打印每一位数字 30 回文数 26 递归求 20! ...

  5. Python3算法基础练习:编程100例(6 ~ 10)

    往期练习: Python3算法基础练习:编程100例(1~5) Python3算法基础练习:编程100例(6 ~ 10) 6.斐波那契数列 7.列表复制 8.乘法口诀表 9.暂停输出 10.格式化时间 ...

  6. Interview之AI:人工智能领域岗位求职面试—人工智能算法工程师知识框架及课程大纲(AI基础之数学基础/数据结构与算法/编程学习基础、ML算法简介、DL算法简介)来理解技术交互流程

    Interview之AI:人工智能领域岗位求职面试-人工智能算法工程师知识框架及课程大纲(AI基础之数学基础/数据结构与算法/编程学习基础.ML算法简介.DL算法简介)来理解技术交互流程 目录 一.A ...

  7. Girls In AI:面向编程零基础女孩子的AI算法工程师养成计划

    Github:YZHANG1270/Girls-In-AI Coding is the new sexy. GirlsInAI(GIA) 是一个面向编程 零基础 的AI算法工程师养成计划.鼓励更多的女 ...

  8. 送书 | 你一定能看懂的算法基础书(代码示例基于Python)

    本文引自图灵教育<算法图解> 你一定能看懂的算法基础书:代码示例基于Python:400多个示意图,生动介绍算法执行过程:展示不同算法在性能方面的优缺点:教会你用常见算法解决每天面临的实际 ...

  9. python编程零基础-编程零基础应当如何开始学习 Python?

    看到问题关于<编程零基础应当如何开始学习 Python?>,其实是在Python未来会很火的一个基础条件下,但是我觉得光光说学习Pyhon这件事,你首先得明白三件事: --如何判断你学习编 ...

最新文章

  1. 单片机c语言编程300例_趣味c语言编程100例(四)
  2. golang goroutine 退出方法
  3. 做网络推广浅析影响网站打开速度的因素,促进网站SEO优化效果提升!
  4. 解决window2012 IIS8 配置的网站无法下载exe文件的问题
  5. eclipse如何导出WAR包
  6. HDFS建筑与shell操作
  7. 为Chrome多账户添加单独的快捷方式
  8. sap中二级品报工问题解决方案
  9. TCP/IP的七层负载均衡
  10. 华为手机相册怎么镜像翻转_怎么利用手机相册制作电子视频
  11. java 递归深度优先遍历_Java基础 - 二叉树的遍历之深度优先遍历(递归遍历)
  12. 双重检查锁实现单例模式的线程安全问题
  13. tp5 使用PHPAnalysis提取关键字中文分词
  14. 基于CNN实现对摄像头捕捉的人脸进行性别和年龄的预测
  15. 使用ECMAScript 5严格模式提升开发效率
  16. 使用Redis+java(模仿数据库)实现对象存取和读取
  17. Windows装机必备软件大全,全部支持Vista系统
  18. FFMPEG解封装后的AVPACKET存储为可播放的h264文件
  19. python ocr识别身份证_如何使用Tesseract训练基于Python的OCR以使用不同的国家身份证?...
  20. VR全景图书馆让读者享受到优质的图书阅览服务

热门文章

  1. xpath.extract() 的使用
  2. 中北大学计算机应用基础课后答案,中北大学计算机与控制工程学院研究生导师介绍:秦品乐...
  3. cisco 华三 对接_H3C交换机与Cisco交换机STP协议对接注意事项
  4. 服务器硬盘sas和sata有什么区别
  5. 让思想在四维世界自由穿梭评《 时空投影:第四维在科学和现代艺术中的表达》...
  6. 软件测试V模型和W模型的区别
  7. 快速发表论文的技巧有哪些
  8. 再论人与人的三大关系:生存关系、性关系和经济关系
  9. 项目管理修炼之道之把握项目的节奏
  10. CIKM 2021 | 淘宝多场景推荐排序模型ZEUS