Algorithm19.1 递归

[TOC]

递归

主要题型:对于一个字串,然后子字串同样进行递归【带有优先级的计算式】

两种方案:

  • 第一种,先输入进来,然后整体进行递归,递归的参数就是这个整体字串
  • 第二种,边输入边递归,这样就可以利用一些getchar,char字符来进行输入的直接判断(例如如果字串一部分为ADD567,如果不知道长度的的话还有遍历判断,如果直接边输入边解析,那就可以直接利用cin来直接分割,cin»字串»数字,就自动分割了)

指令移动

https://www.luogu.com.cn/problem/P1322

#include <iostream>
using namespace std;

int solve() {
    char c;
    string tp;
    int num, ans, d;
    while (cin>>c) {
        if (c == ']') break;
        cin>>tp>>num;
        if (c == 'R') {
            d = getchar();
            ans += num*solve();
            d = getchar();
        }
        if (c == 'B') d = getchar(), ans -= num;
        if (c == 'F') d = getchar(), ans += num;
        if (d == int(']')) break;
    }
    return ans;
}

int main() {
    printf("%d\n", solve());
    return 0;
}
Posted on Feb 1, 2021