zoukankan      html  css  js  c++  java
  • 算法-第四版-练习1.2.10解答

    编写一个类VisualCounter,支持加一和减一操作。它的构造函数接受两个参数N和max,其中N指定了 操作在最大次数,max指定了计数器的最大绝对值。作为副作用,用图像显示每次计数器变化后的值。


    /**
     * Description : 
     * Author      : mn@furzoom.com
     * Date        : Sep 26, 2016 5:04:27 PM
     * Copyright (c) 2013-2016, http://furzoom.com All Rights Reserved.
     */
    package com.furzoom.lab.algs.ch102;
    
    import edu.princeton.cs.algs4.StdDraw;
    import edu.princeton.cs.algs4.StdRandom;
    
    /**
     * ClassName    : E10210 <br>
     * Function     : TODO ADD FUNCTION. <br>
     * date         : Sep 26, 2016 5:04:27 PM <br>
     * 
     * @version 
     */
    public class E10210
    {
        public static void main(String[] args)
        {
            int max = 15;
            int count = 30;
            
            StdDraw.setXscale(0, count+1);
            StdDraw.setYscale(-max, max);
            StdDraw.line(0, 0, count+1, 0);
            
            StdDraw.setPenColor(StdDraw.RED);
            StdDraw.setPenRadius(0.005);
            
            VisualCounter counter = new VisualCounter(count, max);
            counter.draw();
            for (int i = 0; i < count; i++)
            {
                if (StdRandom.bernoulli())
                {
                    counter.increment();
                }
                else
                {
                    counter.decrement();
                }
                counter.draw();
            }
            
        }
    }
    
    class VisualCounter
    {
        private final int n;
        private final int max;
        private int value;
        private int operationCount;
        
        public VisualCounter(int n, int max)
        {
            this.n = n;
            this.max = max;
            this.value = 0;
            this.operationCount = 0;
        }
        
        public void increment()
        {
            if (operationCount++ < n && value < max)
            {
                value++;
            }
        }
        
        public void decrement()
        {
            if (operationCount++ < n && value > -max)
            {
                value--;
            }
        }
        
        public void draw()
        {
            StdDraw.point(operationCount, value);
        }
    }
    结果如下:


    算法-第四版-1.2 数据抽象-习题索引汇总

    算法-第四版习题索引汇总

    作者:马 岩Furzoom) (http://www.cnblogs.com/furzoom/
    版权声明:本文的版权归作者与博客园共同所有。转载时请在明显地方注明本文的详细链接,未经作者同意请不要删除此段声明,感谢您为保护知识产权做出的贡献。
  • 相关阅读:
    3
    2
    1
    11
    12
    8888888888
    99999999999
    88888888888
    77777777
    10.23
  • 原文地址:https://www.cnblogs.com/furzoom/p/7710220.html
Copyright © 2011-2022 走看看