zoukankan      html  css  js  c++  java
  • 用3公升和5公升没有刻度的水杯量出4公升

    公司一个同事面试遇到 的算法题,感觉挺有意思的

    class Program
    {
    abstract class Cup
    {
    protected int MaxVolumn { get; set; }
    protected int Volumn { get; set; }
    public int Fill()
    {
    Volumn = MaxVolumn;
    return Volumn;
    }
    public int Fill(int volumn)
    {
    Volumn += volumn;
    if (Volumn > MaxVolumn)
    Volumn = MaxVolumn;
    return Volumn;
    }
    public int Fill(Cup cup)
    {

    if (Volumn + cup.Volumn > MaxVolumn)
    {
    cup.Volumn = Volumn + cup.Volumn - MaxVolumn;
    Volumn = MaxVolumn;
    }
    else
    {
    Volumn += cup.Volumn;
    cup.Volumn = 0;
    }
    return Volumn;
    }
    public void Empty()
    {
    Volumn = 0;

    }
    public override string ToString()
    {
    return "杯子里现在的水量是:" + Volumn.ToString();
    }
    }
    class Cup3 : Cup
    {
    public Cup3()
    {
    MaxVolumn = 3;
    }

    }
    class Cup5 : Cup
    {
    public Cup5()
    {
    MaxVolumn =5;
    }

    }
    static void Main(string[] args)
    {

    #region 新算法 感谢 “牛C的低调”

    Cup cup5_1,cup5_2;
    cup5_1 = new Cup5();
    cup5_2 = new Cup5();
    Cup cup3 = new Cup3();
    cup5_1.Fill();
    cup3.Fill(cup5_1);
    cup5_2.Fill();
    cup3.Empty();
    cup3.Fill(cup5_2);
    cup5_1.Fill(cup5_2);
    Console.WriteLine("完成!!第1个5升" + cup5_1.ToString());

    #endregion

     #region 原来自己的笨算法

    //cup3.Fill();
    //Console.WriteLine("第1个3升"+cup3.ToString());
    //Console.WriteLine("第1次开始倒水");
    //cup5.Fill(cup3);
    //Console.WriteLine("结束倒水");
    //Console.WriteLine("结束倒水第1个3升" + cup3.ToString());
    //Console.WriteLine("结束倒水第1个5升" + cup5.ToString());
    //cup3.Fill();
    //Console.WriteLine("第2次开始倒水");
    //Console.WriteLine("第1个3升" + cup3.ToString());
    //cup5.Fill(cup3);
    //Console.WriteLine("结束倒水");
    //Console.WriteLine("结束倒水第1个3升" + cup3.ToString());
    //Console.WriteLine("结束倒水第1个5升" + cup5.ToString());

    //Console.WriteLine("将5升杯子清空" );
    //cup5.Empty();
    //Console.WriteLine("清空后第1个5升" + cup5.ToString());
    //Console.WriteLine("第3次开始倒水!将上一次3升杯子中水倒入5升杯子里,再将3升充满后再倒入5升杯内");
    //cup5.Fill(cup3);
    //cup3.Fill();
    //cup5.Fill(cup3);
    //Console.WriteLine("完成!!第1个5升" + cup5.ToString());

    #endregion
    Console.Read();
    }
    }

  • 相关阅读:
    Java网络技术-待续
    Java输入输出技术
    Java数据库技术
    Java安全技术
    Java异常、事件、多线程
    网站产品设计
    C#-委派和事件
    Quartz 触发器(SimpleTrigger&CronTrigger )配置说明 & cronExpression表达式 转
    weblogic出现response already committed(转)
    Weblogic二种修改端口的方法(转)
  • 原文地址:https://www.cnblogs.com/zhshlimi/p/5332318.html
Copyright © 2011-2022 走看看