[HNOI2002]沙漠寻宝 题解

一道大模拟

代码

#include 
#include 
#include 
#include 
using namespace std;
 
string st[1010];
int value[26];
int f,o,s,i;
int p[1010],num[1010];
int s1[150];
char s2[150];
int t1=0,t2=0;
char c;
 
bool check(char ch){
    if((ch>='a'&&ch<='z')||(ch>='0'&&ch<='9')||(ch=='+')||(ch=='-')||(ch=='*')
        ||(ch=='/')||(ch=='(')||(ch==')')||(ch=='=')) 
        return true;
    return false;
}
 
void calcu(){
    int x1,x2,x;
    char p;
    p=s2[t2--];
    x2=s1[t1--];
    x1=s1[t1--];
    switch(p){
        case '+' : x=x1+x2; break;
        case '-' : x=x1-x2; break;
        case '*' : x=x1*x2; break;
        case '/' : x=x1/x2; break;
    }
    s1[++t1]=x;
}
 
void readStr(){
    char b;
    s++;
    int count=0;
    scanf("%c",&b);
    while(!check(b)) scanf("%c",&b);
    while(check(b)){
        st[s]=st[s]+b;
        if(b=='d')count++;
        if(count>20){
            st[s]=st[s].substr(0,3);
            break;
        }
        scanf("%c",&b);
    }
}
 
int result(string t){
    char c;
    unsigned i=0;
    t1=0,t2=0;
    int v;
    while(i='a'&&c<='z'){
            s1[++t1]=value[c-'a'];
            i++;
        }else{
            v=0;
            do{
                v=10*v+c-'0';
                c=t[++i];
            }while(c>='0'&&c<='9'&&i

你可能感兴趣的:([HNOI2002]沙漠寻宝 题解)