听灌佬多
  • 板块灌水区
  • 楼主hushuoyan
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/10/15 14:06
  • 上次更新2024/10/15 18:40:53
查看原帖
听灌佬多
1411725
hushuoyan楼主2024/10/15 14:06

B3789代码,帮忙看看有什么问题
别说这只是一道黄题,难死了,建议升绿

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

int n,k,len,s,y,i,j;
vector<int> xli;
stack<int> st;
set<int> ans;
char a[1010][1010];

struct node{
    bool tp;
    char op;
    int va;
    int ed;
}p[1010];

int fun(int x){
    y = 0;
    for (i = 1;i <= n;i++){
        if (p[i].tp){
            if (p[i].op == '<') if (x >= p[i].va) i = p[i].ed;
            if (p[i].op == '>') if (x <= p[i].va) i = p[i].ed;
        }else y = p[i].va;
    }
    return y;
}

int main(){
    scanf("%d\n",&n);
    for (i = 1;i <= n;i++){
        cin >> a[i];
        len = strlen(a[i]);
        p[i].tp = 0;
        p[i].op = '?';
        s = 0;
        for (j = 0;j < len;j++){
            if (a[i][j] == '<') p[i].op = '<';
            if (a[i][j] == '>') p[i].op = '>';
            if (a[i][j] == '}'){
                p[i].tp = 1;
                int topp = st.top();
                st.pop();
                p[topp].ed = i;
                break;
            }
            if (j > 0 && a[i][j - 1] == 'i' && a[i][j] == 'f'){
                p[i].tp = 1;
                st.push(i);
            }
            if (isdigit(a[i][j])) s = s * 10 + a[i][j] - 48;
        }  
        p[i].va = s;
		if (p[i].tp){
			if (p[i].op == '<') xli.push_back(s - 1);
			else xli.push_back(s + 1);
		}
    }
    for (int i = 0;i < xli.size();i++) ans.insert(fun(xli[i]));
    set<int>::iterator it;
	for(it = ans.begin();it != ans.end();it++) cout << *it <<' ';
    return 0;
}

惨不忍睹的提交记录

2024/10/15 14:06
加载中...