zoukankan      html  css  js  c++  java
  • 常数变易法

    思路:

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

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

    实例:

    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
  • 相关阅读:
    [IOI1994][USACO1.5]数字三角形 Number Triangles
    和为给定数
    小凯的疑惑
    棋盘
    【2020NOI.AC省选模拟#2】C. 送分题
    【NOI OL #2】涂色游戏
    【NOI OL #3】小结
    【NOI OL #1】最小环
    【NOI OL #1】冒泡排序
    【NOI OL #1】序列
  • 原文地址:https://www.cnblogs.com/hupeng1234/p/6821080.html
Copyright © 2011-2022 走看看