算法問題實戰策略 QUADTREE

地址 https://algospot.com/judge/problem/read/QUADTREEios

將壓縮字符串還原後翻轉再次壓縮的樸素作法 在數據量龐大的狀況下是不可取的算法

因此須要在壓縮的狀況下進行翻轉spa

圖片能夠分紅四塊 每塊在顏色不統一的狀況下又會分紅四塊 那麼翻轉也能夠採起這種逐步將問題分解成小塊翻轉 而後再處理大塊算法 最後的到結果的算法code

代碼以下blog

#include <iostream>
#include <string>

using namespace std;

/*
4
w
xbwwb
xbwxwbbwb
xxwwwbxwxwbbbwwxxxwwbbbwwwwbb
=======================================
w
xwbbw
xxbwwbbbw
xxwbxwwxbbwwbwbxwbwwxwwwxbbwb
*/

int n;

string reverse(string::iterator& it)
{
    char head = *it;
    ++it;
    if (head == 'b' || head == 'w')
        return string(1, head);
    string upperLeft = reverse(it);
    string upperRight = reverse(it);
    string lowerLeft = reverse(it);
    string lowerRight = reverse(it);

    return string(1,'x') + lowerLeft + lowerRight + upperLeft + upperRight;
}

int main()
{
    cin >> n;
    while (n--) {
        string s;
        cin >> s;
        string::iterator it = s.begin();
        cout << reverse(it) << endl;
    }

    return 0;
}
相關文章
相關標籤/搜索