help
  • 板块灌水区
  • 楼主a_legend_cat
  • 当前回复2
  • 已保存回复2
  • 发布时间2025/2/4 14:57
  • 上次更新2025/2/4 19:30:13
查看原帖
help
942515
a_legend_cat楼主2025/2/4 14:57

题目大致:

僵尸就要来进攻你的房子了,
戴夫给你写了一封密信,
但为了怕僵尸发现,
他决定给信加密,
并提前告诉你加密的的方法,
加密的方法是在信里加入一些没有意义的字符或单词,
然后加入两个修正符号“#”和“@”。
修正的规则入下:
1,当你发现一个退格符"#",则表示前一个字符无效; 
2,如果发现一个退行符"@",以表示该行中 “@”前的所有字符均无效。 如果已经在行首则'#'符号无效。 
现在请你翻译处加密前的信。

蒟蒻代码:

#include <bits/stdc++.h>
using namespace std;
string x[11000];
int main() {
	int n;
	cin >> n;
	for(int i = 1; i <= n; i++) {
		getline(cin, x[i]);
	}
	for(int i = 1; i <= n; i++) {
		for(int j = 0; j < (int)(x[i].size()); j++) {
			int pos = j;
			if(x[i][j] == '@') {
				if(j == 0) {
					for(pos = j; pos < (int)(x[i]).size(); pos++) {
						if(x[i][pos] == '#') x[i][pos] = 'F';
					}
					x[i][0] = 'F';
				} else {
					while(pos >= 0) {
						x[i][pos] = 'F';
						pos--;
					}
				}
			}
			if(x[i][j] == '#') {
				pos = j - 1;
				x[i][j] = 'F';
				while(x[i][pos] == 'F' && pos) pos--;
				x[i][pos] = 'F';
				continue;
			}
		}
	}
	for(int i = 1; i <= n; i++) {
		for(int j = 0; j < (int)x[i].size(); j++) {
			if(x[i][j] == 'F') {
				continue;
			}
			cout << x[i][j];
		}
		cout << endl;
	}
	return 0;
}
2025/2/4 14:57
加载中...