【违规紫衫】关于计算面积
  • 板块学术版
  • 楼主V_Me_50
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/9/8 22:32
  • 上次更新2023/11/2 22:15:25
查看原帖
【违规紫衫】关于计算面积
236660
V_Me_50楼主2023/9/8 22:32

在《挑战程序设计竞赛2》中,有道题(P86),太晚了懒得打,题目在这

书上用的是栈,然后有不懂的地方(刚刚写了一个帖子的问题,就从网上赫了),请求大佬指示:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    stack<int> s1;
    stack<pair<int, int>> s2;
    char ch;
    int sum = 0;
    for (int i = 0; cin >> ch; i++)
    {
        if (ch == '\\')
            s1.push(i);
        else if (ch == '/' && s1.size() > 0)
        {
            int j = s1.top();
            s1.pop();
            sum += i - j;
            int a = i - j;
            while (s2.size() > 0 && s2.top().first > j)
            {
                a += s2.top().second;
                s2.pop();
            }
            s2.push(make_pair(j, a));
        }
    }
    vector<int> ans;
    while (s2.size() > 0)
    {
        ans.push_back(s2.top().second);
        s2.pop();
    }
    reverse(ans.begin(), ans.end());
    cout << sum << endl;
    cout << ans.size();
    int len = ans.size();
    for (int i = 0; i < len; i++)
    {
        cout << " ";
        cout << ans[i];
    }
    cout << endl;
    return 0;
}

在代码 1919 ~ 2323 行那段不懂,请求大佬告诉我什么意思qwq

while (s2.size() > 0 && s2.top().first > j)
            {
                a += s2.top().second;
                s2.pop();
            }

就这段

2023/9/8 22:32
加载中...