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