• 2303.计算应缴税款总额-297地平线周赛回顾


    第一题,简单的递归调用即可解决。

    可能有部分人不太熟悉递归调用,总是想到用这个方法,但不知道如何去写,我也是最近才开窍的,简要说一说吧:

    思路:

    首先、判断一道题是否可以递归调用,应该判断它是否可以拆解成无数个相同的子问题。

    以这道题为例:

    每一次进行税款计算时,都需进行   △upper  与  △income 比较,如果前者比后者大,则直接将后者乘上税率即可,如果后者比前者大,则要前者乘上税率,并继续下一次比较。

    以上这个步骤是每一次计算税款都需要经历的步骤,因此可以使用递归去解决。

    什么是△upper呢?即brackets[i][0]-brackets[i-1][0](i>=1)例:7-3;12-7;

    什么是△income呢?即income-△upper;例:10-3;7-4;

    方法确定了,变量确定了,逻辑应该怎么去用代码表示呢?

    我们需要把大问题化简为小问题,即 先想想 如果brackets.size()==1时,我们应该怎么写?

    double result=0;

    △upper=brackets[0][0]-0;

    △income=income-△upper;

    此时的税率:result+=△upper*brackets[0][1];(后者>前者)

    那ok了,那如果size==2,下一层传入的参数先更新一下:

    income=△income;

    △upper=brackets[1][0]-brackets[0][0];

    此时的税率:result+=income*brackets[1][1];

    ...【如果更多层,步骤大同小异,只要注意更新传入的参数即可

    代码:

    1. class Solution {
    2. public:
    3. const double error=1e-5;//好像没用到- -
    4. double result=0;
    5. bool flag=false;
    6. void deal_fun(vector<vector<int>>& brackets, int income,int index,int upper)//函数返回,参数
    7. {
    8. if(income<=upper) //递归三部曲--终止条件
    9. {
    10. result+=income*brackets[index][1]*0.01;
    11. flag=true;
    12. return;
    13. }
    14. result+=upper*brackets[index][1]*0.01;
    15. if(index<brackets.size()-1)//前进条件
    16. {
    17. income=income-upper;
    18. upper=brackets[index+1][0]-brackets[index][0];
    19. deal_fun(brackets,income,index+1,upper);
    20. if(flag)return;
    21. }
    22. }
    23. double calculateTax(vector<vector<int>>& brackets, int income) {
    24. deal_fun(brackets,income,0,brackets[0][0]);
    25. return result;
    26. }
    27. };

     

    最近刚刚开窍,还得努努力夯实一下!ヾ(◍°∇°◍)ノ゙加油!!

  • 相关阅读:
    SpringMVC ---- 注解配置SpringMVC
    深度学习基础算法
    SpringBoot+Vue项目自媒体社区平台
    SpringBatch ItemProcessor详解
    Windows 安装mysql数据库
    CodeToN cf #3 Div.1+2 (A-D)
    JUC并发编程——Volatile详解(基于狂神说的学习笔记)
    关于城市旅游的HTML网页设计——中国旅游HTML+CSS+JavaScript 出游旅游主题度假酒店 计划出行网站设计
    单臂路由的详细配置步骤
    8.2 从堆中绕过SafeS.E.H
  • 原文地址:https://blog.csdn.net/qq_57328462/article/details/125445195