도전 프로 그래 밍 (알고리즘 과 데이터 구조) - 데이터 구조의 응용 (면적 계산)

제목 (4.6) 링크: 교차 섹 션 다이어그램 의 영역
창고.
  • 고인 물의 총 면적 을 구 합 니 다. '이 라면 그 아래 표 시 를 스 택 s1 에 누 르 고' / '이면 스 택 상단 에서 대응 하 는' 위치 ip 를 꺼 내 이들 의 거리 i - ip 를 계산 하고 총 면적 에 누적 합 니 다. (고려 할 필요 가 없습니다 ')
  • 각 고인 물의 면적 을 구 합 니 다. 구조 체 (beginx, area) 를 사용 해 야 합 니 다. "/" 를 만 났 을 때 스 택 에 있 는 원래 요소 (원래 의 물웅덩이 가 너무 작 음) 를 업데이트 하거나 새로운 요 소 를 눌 러 야 합 니 다. 구체 적 인 해법 키 코드:
  • #include 
    #include 
    #include 
    #include 
    using namespace std;
    
    struct Node
    {
        int beginx;//         
        int area;//    
    };
    int main()
    {
        stack s1;
        stack s2;
        string s;
        int sum = 0;
        cin >> s;
        for(int i=0; i0 && s2.top().beginx>j)//                     ,    ,        j(              ,          )
                {
                    a += s2.top().area; s2.pop();
                }
                Node n;
                n.beginx = j;
                n.area = a;
                s2.push(n);
            }
        }
        cout << sum << endl;
        cout << s2.size();
        vector s3;
        while(!s2.empty())
        {
            s3.push_back(s2.top().area); s2.pop();
        }
        reverse(s3.begin(), s3.end());//      
        for(vector::iterator it=s3.begin(); it!=s3.end(); it++)
        {
            cout << " " << *it;
        }
        cout << endl;
        s3.clear();
        return 0;
    }
    

    좋은 웹페이지 즐겨찾기