• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            T9的空間

            You will never walk alone!

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              69 隨筆 :: 0 文章 :: 28 評論 :: 0 Trackbacks
            今天做了個題,主要就是判斷兩個算術表達式是否相等,當然是用棧了,先將表達式轉化為后綴表達式,然后棧求值
              1/*Source Code
              2
              3Problem: 1686  User: Torres 
              4Memory: 224K  Time: 0MS 
              5Language: C++  Result: Accepted 
              6
              7Source Code */

              8#include<iostream>
              9#include<string>
             10#include<stack>
             11#include<map>
             12using namespace std;
             13
             14map<char,int>mp;
             15
             16bool isletter(char &c)
             17{
             18    if(c>='a'&&c<='z'||c>='A'&&c<='Z'||c>='1'&&c<='9')
             19        return true;
             20    else return false;
             21}

             22
             23string change(char str[])
             24{
             25    int i,j;
             26    int len=strlen(str);
             27    string temp;
             28    char ch[200];
             29    stack<char> cs;
             30    for(i=0,j=0;i<len;i++)
             31        if(isletter(str[i]))ch[j++]=str[i];
             32        else{
             33            switch(str[i]){
             34            case '(':cs.push(str[i]);break;
             35            case ')':
             36                while(cs.top()!='('){
             37                    ch[j++]=cs.top();
             38                    cs.pop();
             39                }

             40                cs.pop();
             41                break;
             42            case '+':
             43            case '-':
             44            case '*':
             45                while(!cs.empty()&&mp[str[i]]<=mp[cs.top()]){
             46                    ch[j++]=cs.top();
             47                    cs.pop();
             48                }

             49                cs.push(str[i]);
             50                break;
             51            }

             52        }

             53    while(!cs.empty())ch[j++]=cs.top(),cs.pop();
             54    ch[j]='\0';
             55    temp=ch;
             56    return temp;
             57}

             58
             59int result(string &str)
             60{
             61    int i;
             62    int len=str.size();
             63    stack<int> re;
             64    for(i=0;i<len;i++)
             65        if(isletter(str[i]))
             66        {
             67            if(str[i]>='1'&&str[i]<='9')
             68                re.push(str[i]-'0');
             69            else 
             70                re.push((int)str[i]);
             71        }

             72        else{
             73            int a,anext,b;
             74            a=re.top();
             75            re.pop();
             76            anext=re.top();
             77            re.pop();
             78            switch(str[i]){
             79                case'+':b=a+anext;re.push(b);break;
             80                case'-':b=anext-a;re.push(b);break;
             81                case'*':b=a*anext;re.push(b);break;
             82            }

             83        }

             84    return re.top();
             85}
                
             86
             87int main()
             88{
             89    int N,ca;
             90    char str1[100],str2[100];
             91    mp['+']=1;
             92    mp['-']=1;
             93    mp['*']=2;
             94    mp['(']=0;
             95    scanf("%d",&N);
             96    getchar();
             97    for(ca=1;ca<=N;ca++){
             98        gets(str1);
             99        gets(str2);
            100        string temp1,temp2;
            101        temp1=change(str1);
            102        temp2=change(str2);
            103        int re1=result(temp1);
            104        int re2=result(temp2);
            105        if(re1==re2)printf("YES\n");
            106        else printf("NO\n");
            107    }

            108    return 0;
            109}

            110
            111
            posted on 2008-09-07 13:00 Torres 閱讀(857) 評論(0)  編輯 收藏 引用 所屬分類: Data Structures
            性欧美丰满熟妇XXXX性久久久| 久久夜色精品国产噜噜亚洲AV| 久久综合狠狠综合久久激情 | 久久国产精品99精品国产987| 欧美日韩精品久久久免费观看| 久久综合亚洲色一区二区三区| 久久精品水蜜桃av综合天堂| 亚洲午夜久久久精品影院| 久久乐国产精品亚洲综合| 久久精品国产亚洲AV蜜臀色欲| 久久国产色AV免费观看| 亚洲国产成人乱码精品女人久久久不卡| 亚洲av伊人久久综合密臀性色| 大蕉久久伊人中文字幕| 日日噜噜夜夜狠狠久久丁香五月| 久久av免费天堂小草播放| 天天躁日日躁狠狠久久 | 无码人妻久久一区二区三区蜜桃| 97久久国产亚洲精品超碰热| 伊人久久无码精品中文字幕| 99久久亚洲综合精品成人| 亚洲va中文字幕无码久久不卡| 久久精品国产WWW456C0M| 久久免费精品视频| 久久久久亚洲AV无码专区体验| 久久久久久久波多野结衣高潮 | 日本精品久久久久中文字幕| 伊人久久精品无码二区麻豆| 欧美亚洲国产精品久久久久| 国产巨作麻豆欧美亚洲综合久久 | 无遮挡粉嫩小泬久久久久久久| 国内精品久久久久影院网站| 四虎国产精品免费久久久| 久久99久久99精品免视看动漫| 亚洲香蕉网久久综合影视| 久久国产色av免费看| 久久精品人人做人人爽电影| 久久久久久国产精品美女| 久久亚洲精品无码aⅴ大香| 免费无码国产欧美久久18| 欧美精品国产综合久久|