【題目敘述】https://zerojudge.tw/ShowProblem?problemid=i400
【解題想法】輸入所有的「 e 字串」後,將「字串 T」 逆序處理,還原出「字串S」。
#include <iostream>
#include <string>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
string e[m];
for (int i = 0; i < m; i++) {
cin >> e[i];
}
string S = "", T = "";
cin >> T;
for (int i = m-1; i >= 0; i--) {
int cnt_1 = 0; //統計‘1’出現的數量
S = "";
for (int j = n-1; j >= 0; j--) {
if (e[i][j] == '1') {
S += T[j];
cnt_1++;
} else {
S = T[j] + S;
}
}
if (cnt_1 % 2) {
//字串 e 中 1 的出現次數是奇數
if (n % 2) {
//字串 S 的長度是奇數
S = S.substr(n/2+1, n/2) + S.substr(n/2, 1) + S.substr(0, n/2);
} else {
S = S.substr(n/2, n/2) + S.substr(0, n/2);
}
}
T = S;
}
cout << S << "\n";
return 0;
}