大佬救救
查看原帖
大佬救救
1453256
yucplusplus楼主2024/10/16 00:58

感觉逻辑没问题,但就是报运行错误,有没有大佬救救我,呜呜呜

#include <iostream>
#include <stdio.h>
#include <vector>
#include <string>
#include <stack>
#include <cmath>
using namespace std;
#define LL long long
//const
struct node{
	int f,l,r,num;
	char ysf;
}T={-1,-1,-1,-1,'.'};
vector<node> tree(1000050,T);
string str;
int p=0,i=0;
int Num(){
    i++;
    int ans=0;
    stack<int> s;
    while(int(str[i])>=48&&int(str[i])<=57){
        int h=int(str[i])-48;
        s.push(h);
        i++;
    }
    int n=s.size();
    for(int j=0;j<n;j++){
        ans+=s.top()*pow(10,j);
        s.pop();
    }
    return ans;
}
int main()
{
	int m,q;
	cin>>m>>q>>str;
	for(i=0;i<str.size();){
		if(str[i]=='x') {
//            tree[p].ysf=str[++i];
//            tree[p].num=Num();			
			tree[p].ysf=str[++i];
			tree[p].num=Num();
        }
        if(str[i]=='?') {
//            p*=2;
//            i++;
			tree[p+1].f=p;
			tree[p].l=p+1;
            
			p++;
			i++;
        }
        if(str[i]==':'){
            if(tree[tree[p].f].r==-1){
                tree[tree[p].f].r=++p;
            }else{
                int P=p;
                while(1){
                    P=tree[P].f;
                    if(tree[tree[P].f].r==-1){
                        tree[tree[P].f].r=p++;
                        break;
                    }
                }
                
            }
            
            i++;
        }
        if(int(str[i])>=48&&int(str[i])<=57){
            tree[p].ysf='=';
            i--;
            tree[p].num=Num();
            
        }
	}
    //cout<<'1';
    for(int j=0;j<m;j++){
        cout<<'\n'<<j<<' '<<tree[j].num<<' '<<tree[j].ysf<<' '<<tree[j].l<<' '<<tree[j].r<<' '<<tree[j].f<<'\n';
    }
	// for(int i=0;i<q;i++){
 //        int Q;
 //        cin>>Q;
 //        int j=0;
 //        while(tree[j].ysf!='='){
 //            if(tree[j].ysf=='>'){
 //                if(Q>tree[j].num) j=tree[j].l;
 //                else j=tree[j].r;
 //            }
 //            if(tree[j].ysf=='<'){
 //                if(Q<tree[j].num) j=tree[j].l;
 //                else j=tree[j].r;
 //            }
 //        }
 //        cout<<tree[j].num<<'\n';
 //    }
	return 0;
}
2024/10/16 00:58
加载中...