码迷,mamicode.com
首页 > 其他好文 > 详细

常数变易法

时间:2017-05-07 16:48:53      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:开始   oid   span   9.png   找规律   bdc   com   输出   div   

思路:

现将变动部分用常数代替,再逐步将常数替换为变数(变量)

关键是寻找变化的规律,如果不直观,可以列出所有变化,进行比对,然后设计公式

 

实例:

1.输出三角星号

技术分享

首先找规律,发现每一行都是先输出空格,然后输出*号,空格、信号与行号的关系如下:

行号     空格数     星号数

1            4         1

2            3         2

3            2          3

4            1          4

5            0          5

代码:

    public static void main(String[] args) {
        int rows = 5;
        for (int i = 1; i <= rows; ++i) {
            for (int j = 1; j <= rows - i; ++j) {
                System.out.print(" ");
            }
            for (int j = 1; j <= i; ++j) {
                System.out.print("* ");
            }
            System.out.println();
        }
    }

 

2.输出字母金字塔

技术分享

经过观察,可以发现每一行的字符从左到右都是先增大再减小,最大的字符都是‘A’ + 行号-1(行号从1开始)

    public static void main(String[] args) {
    {
        int rows = 5;
        char ch = ‘A‘;
        for (int i = 1; i <= rows; ++i) {
            for (int j = 1; j <= rows - i; ++j) {
                System.out.print(‘ ‘);
            }
            for (int j = 0; j <= i - 1; ++j) {
                System.out.print((char) (ch + j));  // 将ASCII码转换为字符
            }
            for (int j = i - 2; j >= 0; --j) {
                System.out.print((char) (ch + j));
            }
            System.out.println();
        }
    }

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

 3.输出以下图形

技术分享

 

代码:

技术分享
public static void main(String[] args) {
    {
        int rows = 13;
        if (rows % 2 == 0)  //由于图形对称,处理偶数行,使其变为奇数行
            rows += 1;
        for (int i = 1; i<= rows/2; ++i)
        {
            for(int j = 0; j < i; ++j)
                System.out.print(‘ ‘);
            System.out.print("$$");
            for(int j = 0; j < rows /2 -i; ++j)
                System.out.print("  ");
            System.out.print("$$");
            System.out.println();
        }
        for(int i = 1; i <= rows/2+1; ++i)
            System.out.print(‘ ‘);
        System.out.println("$$");
        
        for (int i = 1; i<= rows/2; ++i)
        {
            for(int j = 0; j < rows/2+1 -i; ++j)
                System.out.print(‘ ‘);
            System.out.print("$$");
            for(int j = 0; j < i - 1; ++j)
                System.out.print("  ");
            System.out.print("$$");
            System.out.println();
        }
        
    }
View Code

 

常数变易法

标签:开始   oid   span   9.png   找规律   bdc   com   输出   div   

原文地址:http://www.cnblogs.com/hupeng1234/p/6821080.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!