青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

CSU OJ - 1183: 計算表達式的值

   題目意思很簡單就是計算含括號的四則運算表達式的值。這個題目很坑爹,剛做的時候,題目描述里面只說里面會有空格,
后面居然把題目描述改了。所以,這個題無論怎么改,都是不對。因為,不知道是哪個坑爹的出題人,把數據里面加了\t,
難道出題人以為\t也是空格。估計,后面修改題目描述,也是發現這個問題后才改的。這可是還是哥了,改了無數多遍,
不處理非法數據就超時,略過非常數據當然直接WA了。好坑爹。
   計算表達式的值,以前嚴蔚敏書上就說用棧構造出來后綴表達式后再計算值。但是這個方法未免太那個了,首先太麻煩了,
雖然算法思路不麻煩。我的做法是直接遞歸計算即可。碰到左括號遞歸計算新的表達式,右括號作為函數終止條件。否則,按照
四則運算的優先級計算當前的表達式。遞歸算法中需要記錄前一個運算符合的優先級,如果前一個運算符的優先級比現在碰到的
運算符的優先級高,那么就應該直接返回答案了
,當前碰到的運算符的計算交給下一次循環好了。

   代碼如下:

#include <stdio.h>
#define MAX (100 + 10)
char szData[MAX];

void TrimSpace(char* pszData)
{
    char* pszRead = pszData;
    char* pszWrite = pszData;
    while (*pszRead)
    {
        //由于數據中有\t,與先前題目描述不符合,不處理掉就直接超時了
        if (*pszRead != ' ' && *pszRead != '\t')
        {
            *pszWrite++ = *pszRead;
        }
        ++pszRead;
    }
    *pszWrite = '\0';
}

//nKind代表前一個運算符合的優先級,開始時是0,+-是1,*/是2
double Cal(char*& pszData, int nKind)
{
    double fAns = 0.0;
    while (*pszData && *pszData != ')')//表達式終止的條件是到達'\0'或者碰到右括號
    {
        if (*pszData >= '0' && *pszData <= '9')
        {
            fAns = 10 * fAns + *pszData - '0';
            ++pszData;
        }
        else if (*pszData == '+')
        {
            if (nKind >= 1)
            {
                return fAns;
            }
            ++pszData;
            fAns += Cal(pszData, 1);
        }
        else if (*pszData == '-')
        {
            if (nKind >= 1)
            {
                return fAns;
            }
            ++pszData;
            fAns -= Cal(pszData, 1);
        }
        else if (*pszData == '*')
        {
            if (nKind >= 2)
            {
                return fAns;
            }
            ++pszData;
            fAns *= Cal(pszData, 2);
        }
        else if (*pszData == '/')
        {
            if (nKind >= 2)
            {
                return fAns;
            }
            ++pszData;
            fAns /= Cal(pszData, 2);
        }
        else if (*pszData == '(')
        {
            ++pszData;
            fAns = Cal(pszData, 0);
            ++pszData;//移到')'后面
            return fAns;//一個括號內的是一個完整的表達式,因此直接返回
        }
    }
    
    return fAns;
}

int main()
{
    while (gets(szData))
    {
        TrimSpace(szData);
        char* pszData = szData;
        printf("%.4f\n", Cal(pszData, 0));
    }
}
   一個遞歸函數能計算出表達式的值,而且能處理優先級和括號,如果是以前的話,我應該是寫不出來的。再把算法的實現細節改改,
應該也能計算出浮點數的表達式了。
   

posted on 2012-03-19 16:26 yx 閱讀(1539) 評論(1)  編輯 收藏 引用 所屬分類: 模擬

評論

# re: CSU OJ - 1183: 計算表達式的值 2013-02-20 10:35 LimitSY

3+5*9/1+(-5*6+4*2-4*(2/1+5-(2+3+(-5*2)-4)+4)*3)/2  回復  更多評論   

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導航

統計

公告

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

me

好友

同學

網友

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美成人激情视频| 免费高清在线一区| 久久资源在线| 国产精品高清一区二区三区| 国产综合视频在线观看| 亚洲欧美日韩精品久久久| 亚洲人精品午夜| 久久久噜噜噜久久人人看| 亚洲最新色图| 欧美精品免费看| 亚洲精品国产系列| 欧美成人第一页| 免费欧美电影| 亚洲国产日韩欧美在线图片| 老牛嫩草一区二区三区日本| 久久精品视频导航| 精品9999| 亚洲第一成人在线| 亚洲一二三级电影| 国产精品久久久久久影院8一贰佰| 国产亚洲精品资源在线26u| 亚洲欧美国产精品专区久久| 亚洲欧美日韩一区二区三区在线观看 | 午夜精品美女久久久久av福利| 欧美一进一出视频| 亚洲线精品一区二区三区八戒| 欧美亚洲一区在线| 国产一区二区日韩| 美女图片一区二区| 免费久久99精品国产自| 一本久道久久综合中文字幕| 一个色综合导航| 国产日韩欧美综合精品| 乱中年女人伦av一区二区| 欧美18av| 午夜影院日韩| 久久婷婷成人综合色| 亚洲美女在线国产| 亚洲一区尤物| 亚洲国产美国国产综合一区二区| 亚洲欧美日韩成人| 午夜精品久久久久久久白皮肤| 欧美激情第9页| 亚洲美女性视频| 亚洲愉拍自拍另类高清精品| 极品少妇一区二区三区精品视频| 欧美一区二区三区精品电影| 久久福利毛片| 中文亚洲欧美| 亚洲欧美日韩国产精品| 亚洲国产日韩美| 一区二区三区**美女毛片| 在线观看一区二区视频| 一区二区三区欧美成人| 亚洲大片在线| 午夜性色一区二区三区免费视频| 国产精品女同互慰在线看| 久久综合免费视频影院| 欧美日韩精品免费观看视一区二区| 最近中文字幕mv在线一区二区三区四区 | 在线国产亚洲欧美| 在线亚洲激情| 亚洲韩国青草视频| 亚洲欧美视频一区| 一本色道久久综合狠狠躁篇怎么玩| 亚洲大黄网站| 欧美亚洲第一区| 欧美激情国产日韩精品一区18| 久久一日本道色综合久久| 亚洲制服av| 欧美激情在线| 亚洲大片在线| 在线免费观看视频一区| 午夜一区在线| 欧美一区二区国产| 国产精品久久久久久久久久尿 | 男人的天堂亚洲在线| 国产欧美一区二区视频| 久久精品视频在线免费观看| 欧美电影免费| 免费一级欧美在线大片| 国产揄拍国内精品对白| 中文精品在线| 一区二区三区www| 欧美黄色成人网| 欧美激情在线免费观看| 亚洲国产成人久久| 久久免费精品视频| 久久午夜电影网| 国产日韩欧美三区| 亚洲欧美经典视频| 欧美一区二区三区电影在线观看| 久久久久久久精| 久久久久久久综合日本| 欧美成人a∨高清免费观看| 麻豆精品传媒视频| 亚洲国产欧美一区二区三区丁香婷| 日韩午夜高潮| 一本久久综合亚洲鲁鲁| 欧美日韩一区精品| 亚洲午夜在线观看| 欧美一级片在线播放| 国产日韩视频一区二区三区| 午夜日韩电影| 欧美a级理论片| 99视频精品| 欧美在线视频免费播放| 久久精品国产欧美激情| 欧美成人按摩| 亚洲精品护士| 亚洲欧美一级二级三级| 欧美成人69| 日韩图片一区| 香蕉成人啪国产精品视频综合网| 老牛国产精品一区的观看方式| 亚洲一区二区三区涩| 久久精品成人一区二区三区蜜臀 | 怡红院精品视频| 巨胸喷奶水www久久久免费动漫| 亚洲尤物精选| 国产精品视频久久| 久久精品中文字幕免费mv| 欧美国产精品中文字幕| 中文成人激情娱乐网| 国产亚洲精品资源在线26u| 另类av一区二区| 在线亚洲伦理| 欧美成人综合网站| 亚洲一区三区电影在线观看| 国产农村妇女精品一二区| 久久精品一本久久99精品| 亚洲精品乱码久久久久久按摩观| 狠久久av成人天堂| 欧美成在线视频| 性欧美暴力猛交另类hd| 欧美jizzhd精品欧美喷水| 亚洲无吗在线| **性色生活片久久毛片| 久久久伊人欧美| 亚洲人成毛片在线播放| 久久久久一区二区| 亚洲欧美激情一区| 欧美三区在线| 亚洲免费视频成人| 亚洲欧美激情视频| 91久久精品日日躁夜夜躁国产| 欧美一级网站| 亚洲人成绝费网站色www| 日韩亚洲成人av在线| 国产午夜精品理论片a级大结局 | 欧美成人精品在线| 午夜欧美不卡精品aaaaa| 一本综合久久| 亚洲人在线视频| 欧美v日韩v国产v| 久久久99国产精品免费| 亚洲一区三区在线观看| 亚洲精选中文字幕| 亚洲国产mv| 欧美激情免费在线| 欧美在线播放一区二区| 亚洲女同同性videoxma| 亚洲视频第一页| 一区二区三区免费在线观看| 亚洲乱码国产乱码精品精98午夜 | 欧美一级视频免费在线观看| 一区二区三区欧美在线观看| 亚洲黄色一区| 亚洲欧美日韩精品久久久| 99国产精品久久久| 国产乱码精品一区二区三区忘忧草| 午夜精品福利一区二区蜜股av| 久久久999| 亚洲欧美偷拍卡通变态| 亚洲天堂偷拍| 一区二区三区免费看| 一本久久综合亚洲鲁鲁| 亚洲深爱激情| 亚洲免费一级电影| 亚洲一区欧美激情| 校园春色综合网| 久久av一区二区| 久久久久久亚洲综合影院红桃 | 欧美精品一区二区三区四区| 免费视频亚洲| 欧美激情亚洲激情| 欧美理论在线播放| 欧美亚州韩日在线看免费版国语版| 久久久久久色| 久久夜色精品国产亚洲aⅴ| 欧美1区2区3区| 国产精品成人一区二区三区夜夜夜 | 欧美一区二区三区播放老司机| 国内自拍一区| 伊人精品视频| 亚洲免费观看高清完整版在线观看| 国产一区二区三区成人欧美日韩在线观看| 久久免费国产精品| 欧美精品aa| 国产精品一区二区在线观看网站|