P1928 外星密码(求解)
  • 板块灌水区
  • 楼主heyihang
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/1/28 10:30
  • 上次更新2024/1/28 12:01:34
查看原帖
P1928 外星密码(求解)
727868
heyihang楼主2024/1/28 10:30

10个点只对4个,以下是我的代码(C++)。

#include <bits/stdc++.h>
using namespace std;

string str;

void dfs(string str,int bol){
	int num1 = 1;
	if(bol == 1){
		if(str[0] >= '0' && str[0] <= '9'){
			num1 = str[0] - '0';
			str = str.substr(1,str.size() - 1);
		}
		if(str[0] >= '0' && str[0] <= '9'){
			num1 = num1 * 10 + (str[0] - '0');
			str = str.substr(1,str.size() - 1);
		}
	}
	if(str[0] == '[' && bol == 0){
		str = str.substr(1,str.size() - 2);
		dfs(str,1);
		return;
	}
	while(num1--){
		int i = 0;
		if(str[0] >= 'A' && str[0] <= 'Z'){
			while(++i){
				if(str[i - 1] >= 'A' && str[i - 1] <= 'Z'){
					printf("%c",str[i - 1]);
				}else{
					break;
				}
			}
		}
		i--;
		if(i == str.size() || str[i] == ']'){
			continue;
		}else{
			int j = str.size();
			if(str[i + 1] >= '0' && str[i + 1] <= '9'){
				while(j--){
					if(str[j] == ']'){
						break;
					}
				}
			}
			if(str[0] == '['){
				dfs(str.substr(1,str.size() - 2),1);
				continue;
			}
			dfs(str.substr(i + 1,j - i - 1),1);
			i = j;
		}
		if(str[0] >= 'A' && str[0] <= 'Z'){
			while(++i){
				if(str[i - 1] >= 'A' && str[i - 1] <= 'Z'){
					printf("%c",str[i - 1]);
				}else{
					break;
				}
			}
		}
	}
	return;
}

int main(){
	cin >> str;
	dfs(str,0);
	return 0;
}

求错误点,在线等!!!

2024/1/28 10:30
加载中...