uva 10562(dfs)

来源:互联网 发布:小批量梯度下降算法 编辑:程序博客网 时间:2024/06/18 06:40

题解:题意很好理解,具体做法是深搜,将行序号,还有根据子节点的范围确定的 '-' 的初始和末尾的范围当做递归参数,直到子节点下面没有 '|' 为止。

#include <iostream>#include <cstring>#include <cstdio>#include <string>using namespace std;const int N = 200 + 5;string str[N], ans;int n;void init() {    ans = "";    n = 0;    for (int i = 0; i < N; i++)        str[i] = "";}void dfs(int i, int st, int en) {    ans += '(';    for(int j = st; j <= en && j < str[i].size(); j++ )        if(str[i][j] != ' ' && str[i][j] != '#' && str[i][j] != '|' && str[i][j] != '-') {            ans += str[i][j];            if(str[i + 1][j] == '|') {                int temp1 = -1;                int temp2 = str[i + 2].size() - 1;                for(int k = j; k >= 0; k--)                    if (str[i + 2][k] != '-') {                        temp1 = k;                        break;                    }                for(int k = j; k < str[i + 2].size(); k++)                    if (str[i + 2][k] != '-') {                        temp2 = k;                        break;                    }                if(temp1 == -1)                    temp1 = 0;                dfs(i + 3, temp1, temp2);            }            else                ans += "()";        }    ans += ')';    return;}


0 0
原创粉丝点击