地址 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; }