• <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>
            posts - 16,comments - 0,trackbacks - 0
            http://poj.org/problem?id=1141
            DP, 記錄路徑。
            #?include?<stdio.h>
            #?include?
            <string.h>

            #?define?N?
            205
            #?define?INF?
            1000000000
            #?define?Mid?(
            1?<<?10)
            #?define?Lft?(
            1?<<?9?)
            #?define?Rgt?(
            1?<<?8?)

            char?buf[N];
            int?f[N][N],?p[N][N];

            int?dp(int?x,?int?y)
            {
            ????????????????
            int?&?ans?=?f[x][y];
            ????????????????
            if?(ans?!=?-1)?return?ans;
            ????????????????
            if?(x?>?y)?return?ans?=?0;
            ????????????????ans?
            =?INF;
            ????????????????
            if?(?(buf[x]=='('&&buf[y]==')')?||
            ?????????????????????(buf[x]
            =='['&&buf[y]==']')?)
            ????????????????{
            ????????????????????????????????
            if?(ans?>?dp(x+1,?y-1))
            ????????????????????????????????{
            ????????????????????????????????????????????????p[x][y]?
            =?Mid;
            ????????????????????????????????????????????????ans?
            =?f[x+1][y-1];
            ????????????????????????????????}
            ????????????????}
            ????????????????
            if?(?buf[x]=='('?||?buf[x]=='['?)
            ????????????????{
            ????????????????????????????????
            if?(ans?>?dp(x+1,?y)+1)
            ????????????????????????????????{
            ????????????????????????????????????????????????p[x][y]?
            =?Rgt;
            ????????????????????????????????????????????????ans?
            =?f[x+1][y]?+?1;
            ????????????????????????????????}
            ????????????????}
            ????????????????
            if?(?buf[y]==')'?||?buf[y]==']'?)
            ????????????????{
            ????????????????????????????????
            if?(ans?>?dp(x,?y-1)+1)
            ????????????????????????????????{
            ????????????????????????????????????????????????p[x][y]?
            =?Lft;
            ????????????????????????????????????????????????ans?
            =?f[x][y-1]?+?1;
            ????????????????????????????????}
            ????????????????}
            ????????????????
            for?(int?i?=?x;?i?<?y;?++i)
            ????????????????{
            ????????????????????????????????
            if?(ans?>?dp(x,?i)+dp(i+1,?y))
            ????????????????????????????????{
            ????????????????????????????????????????????????p[x][y]?
            =?i;
            ????????????????????????????????????????????????ans?
            =?f[x][i]?+?f[i+1][y];
            ????????????????????????????????}
            ????????????????}
            ????????????????
            return?ans;
            }

            void?print(int?s,?int?t)
            {
            ????????????????
            switch(p[s][t])
            ????????????????{
            ????????????????????????????????
            case?Mid:
            ????????????????????????????????{
            ????????????????????????????????????????????????putchar(buf[s]),?print(s
            +1,?t-1),?putchar(buf[t]);
            ????????????????????????????????????????????????
            break;
            ????????????????????????????????}
            ????????????????????????????????
            case?Lft:
            ????????????????????????????????{
            ????????????????????????????????????????????????
            if?(buf[t]?==?')')
            ????????????????????????????????????????????????????????????????putchar(
            '('),?print(s,?t-1),?putchar(')');
            ????????????????????????????????????????????????
            else
            ????????????????????????????????????????????????????????????????putchar(
            '['),?print(s,?t-1),?putchar(']');
            ????????????????????????????????????????????????
            break;
            ????????????????????????????????}
            ????????????????????????????????
            case?Rgt:
            ????????????????????????????????{
            ????????????????????????????????????????????????
            if?(buf[s]?==?'(')
            ????????????????????????????????????????????????????????????????putchar(
            '('),?print(s+1,?t),?putchar(')');
            ????????????????????????????????????????????????
            else
            ????????????????????????????????????????????????????????????????putchar(
            '['),?print(s+1,?t),?putchar(']');
            ????????????????????????????????????????????????
            break;
            ????????????????????????????????}
            ????????????????????????????????
            case?0:
            ????????????????????????????????{
            ????????????????????????????????????????????????
            for?(int?i?=?s;?i?<=?t;?++i)
            ????????????????????????????????????????????????????????????????putchar(buf[i]);
            ????????????????????????????????????????????????
            break;
            ????????????????????????????????}
            ????????????????????????????????
            default:
            ????????????????????????????????{
            ????????????????????????????????????????????????print(s,?p[s][t]),?print(p[s][t]
            +1,?t);
            ????????????????????????????????????????????????
            break;
            ????????????????????????????????}
            ????????????????}
            }

            int?main()
            {
            ????????????????
            int?n;

            ????????????????buf[
            0]?=?0,?scanf("%s",?buf+1);
            ????????????????memset(f,?
            -1,?sizeof(f));
            ????????????????memset(p,?
            0,?sizeof(p));
            ????????????????n?
            =?strlen(buf+1);
            ????????????????dp(
            1,?n),?print(1,?n),?putchar('\n');

            ????????????????
            return?0;
            }

            posted on 2012-10-11 13:57 yajunw 閱讀(278) 評論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            91久久精品91久久性色| 欧美日韩成人精品久久久免费看| 久久久久人妻一区精品性色av| 久久九九有精品国产23百花影院| 一级做a爰片久久毛片免费陪 | 人妻少妇精品久久| 国产成人精品综合久久久| 国产 亚洲 欧美 另类 久久| 伊人久久成人成综合网222| 狠狠色丁香久久综合婷婷| 国产香蕉久久精品综合网| 91亚洲国产成人久久精品网址| yy6080久久| 久久久久亚洲精品无码网址| 99久久无码一区人妻a黑| 一本久久a久久精品vr综合| 久久无码AV中文出轨人妻| 久久99精品综合国产首页| 亚洲中文字幕久久精品无码APP | 国产成人久久精品区一区二区| 日本加勒比久久精品| 91精品免费久久久久久久久| 91精品国产综合久久精品| 久久婷婷成人综合色综合| 香蕉久久夜色精品国产2020| 久久国产热这里只有精品| 香蕉久久一区二区不卡无毒影院 | 免费久久人人爽人人爽av| 国産精品久久久久久久| 久久美女人爽女人爽| 99麻豆久久久国产精品免费| 蜜臀av性久久久久蜜臀aⅴ| 久久人人爽人人爽人人爽| 久久婷婷色香五月综合激情| 色婷婷久久久SWAG精品| 久久精品无码一区二区三区日韩| 一本伊大人香蕉久久网手机| 日本道色综合久久影院| 青青草国产成人久久91网| 9191精品国产免费久久| 激情久久久久久久久久|