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

pku1213 Roman Numerals 回溯,注意數(shù)學(xué)剪枝

題目
給出一個(gè)羅馬算式(其實(shí)就是數(shù)字用羅馬字母表示的算式),問是否成立;如果字母代表的是0-9,有沒有可能存在一種方案使得自然算式成立

解法
第一問很簡(jiǎn)單,我就不說什么了。不過處理的時(shí)候有簡(jiǎn)單的地方,如果第i個(gè)羅馬數(shù)字>第i-1個(gè)羅馬數(shù)字,結(jié)果就加上num[i]-2*[numi-1]。
第二問讓我糾結(jié)好久。。fzu賽區(qū)一個(gè)題目和這個(gè)一樣,不過那個(gè)數(shù)據(jù)量小。這題數(shù)據(jù)量MS很大。如果沒有剪枝的程序跑了1.5秒。。雖然uva是過了,poj卻差很多。后來google,找到一個(gè)日本人寫的代碼,跑了79ms。。。。仔細(xì)研讀,發(fā)現(xiàn)我漏了一個(gè)重要的剪枝條件:a+b=c能夠成立當(dāng)且僅當(dāng)c的位數(shù)<=1+max(a、b的位數(shù)并且c的位數(shù)>=max(a、b的位數(shù)),就+了這一個(gè)判斷在POJ上就過了。。。。其他的還有很大的常數(shù)優(yōu)化空間,不過我這種人很懶的- -

代碼
  1 //============================================================================
  2 // Name        : pku1213.cpp
  3 // Author      : yzhw
  4 // Version     :
  5 // Copyright   : yzhw
  6 // Description : Hello World in C++, Ansi-style
  7 //============================================================================
  8 
  9 #include <iostream>
 10 # include <cstdio>
 11 # include <cstring>
 12 # include <algorithm>
 13 using namespace std;
 14 char str[128],d[3][20];
 15 int charmap[255],digit[255];
 16 bool flag;
 17 int GetRomanNum(char *num)
 18 {
 19     int res=digit[*num];
 20     for(int i=1;num[i]!='\0';i++)
 21         if(digit[num[i]]>digit[num[i-1]])
 22             res=res-2*digit[num[i-1]]+digit[num[i]];
 23         else res+=digit[num[i]];
 24     return res;
 25 }
 26 int GetNormalNum(char *num)
 27 {
 28     int res=0;
 29     for(int i=0;num[i]!='\0';i++)
 30         res=res*10+charmap[num[i]];
 31     return res;
 32 }
 33 bool search(int num,int pos)
 34 {
 35     if(num==3)
 36     {
 37         if(GetNormalNum(d[0])+GetNormalNum(d[1])==GetNormalNum(d[2]))
 38         {
 39             if(!flag)
 40             {
 41                 flag=true;
 42                 return false;
 43             }
 44             else
 45                 return true;
 46         }
 47         else return false;
 48     }
 49     else if(d[num][pos]=='\0')
 50         return search(num+1,1);
 51     else
 52     {
 53         if(charmap[d[num][pos]]!=-1)
 54             return search(num,pos+1);
 55         else
 56         {
 57             for(int i=0;i<10;i++)
 58             {
 59                 charmap[d[num][pos]]=i;
 60                 if(search(num,pos+1)) return 1;
 61                 charmap[d[num][pos]]=-1;
 62             }
 63             return 0;
 64         }
 65     }
 66 }
 67 bool search(int num)
 68 {
 69     if(num==3)
 70     {
 71         if(search(0,1)) return true;
 72         else return false;
 73     }
 74     else if(charmap[d[num][0]]!=-1return search(num+1);
 75     else
 76     {
 77         for(int i=1;i<10;i++)
 78         {
 79             charmap[d[num][0]]=i;
 80             if(search(num+1)) return true;
 81             charmap[d[num][0]]=-1;
 82         }
 83         return false;
 84     }
 85 }
 86 int main() {
 87     digit['I']=1;
 88     digit['V']=5;
 89     digit['X']=10;
 90     digit['L']=50;
 91     digit['C']=100;
 92     digit['D']=500;
 93     digit['M']=1000;
 94     while(true)
 95     {
 96         scanf("%s",str);
 97         if(str[0]=='#'break;
 98         strcpy(d[0],strtok(str,"+"));
 99         strcpy(d[1],strtok(NULL,"="));
100         strcpy(d[2],strtok(NULL," "));
101         //test Roman Number
102         if(GetRomanNum(d[0])+GetRomanNum(d[1])==GetRomanNum(d[2]))
103             printf("Correct ");
104         else
105             printf("Incorrect ");
106         //test Normal Number
107         flag=false;
108         memset(charmap,-1,sizeof(charmap));
109         if(strlen(d[2])>max(strlen(d[0]),strlen(d[1]))+1||strlen(d[2])<max(strlen(d[0]),strlen(d[1])))
110         {
111             printf("impossible\n");
112             continue;
113         }
114         if(search(0)) printf("ambiguous\n");
115         else if(flag) printf("valid\n");
116         else printf("impossible\n");
117     }
118     return 0;
119 }
120 

posted on 2011-01-19 20:18 yzhw 閱讀(193) 評(píng)論(0)  編輯 收藏 引用 所屬分類: search

<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

導(dǎo)航

統(tǒng)計(jì)

公告

統(tǒng)計(jì)系統(tǒng)

留言簿(1)

隨筆分類(227)

文章分類(2)

OJ

最新隨筆

搜索

積分與排名

最新評(píng)論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲美女黄网| 免费久久99精品国产自| 国产精品久久久久久av下载红粉 | 午夜精品久久久久久久久久久久| 亚洲欧美精品一区| 国产精品高清一区二区三区| 欧美视频官网| 久久精品视频免费| 亚洲国产精品久久人人爱蜜臀| 欧美一区二区三区男人的天堂| 久久精品官网| 亚洲精品影院在线观看| 99精品国产一区二区青青牛奶| 国产欧美日韩中文字幕在线| 欧美综合国产| 99视频一区| 久久欧美中文字幕| 亚洲欧美在线免费观看| 亚洲国产一二三| 久久久久久久久久久成人| 久久久久欧美| 欧美1区3d| 香蕉久久夜色精品国产| 亚洲精品一二区| 国产在线精品自拍| 欧美欧美天天天天操| 久久精品女人| 欧美成人午夜影院| 美女国内精品自产拍在线播放| 亚洲午夜日本在线观看| 欧美高清视频www夜色资源网| 久久久777| 午夜精品理论片| 久久综合网hezyo| 欧美一区激情视频在线观看| 一本一本久久a久久精品牛牛影视| 国产亚洲成av人片在线观看桃 | 欧美激情亚洲视频| 久久久久久一区二区| 亚洲精品乱码久久久久| 久久美女性网| 亚洲一区二区高清| 欧美一级久久| 国产精品美女在线观看| 国产精品乱码久久久久久| 亚洲国产精品久久久久婷婷老年| 国产一区二区三区免费观看| 国内自拍一区| 在线观看国产成人av片| 亚洲福利一区| 久久精品在线| 午夜久久黄色| 久久激情网站| 免费在线观看一区二区| 韩国v欧美v日本v亚洲v| 午夜在线成人av| 在线亚洲高清视频| 亚洲午夜在线观看| 欧美日韩亚洲一区三区| 国产精品视频在线观看| 国产一区再线| 久久激情一区| 性欧美8khd高清极品| 国产日韩视频| 久久一区视频| 亚洲精品资源美女情侣酒店| 日韩视频中文字幕| 亚洲一区视频在线| 国产精品卡一卡二卡三| 亚洲专区国产精品| 国产欧美一区二区精品仙草咪| 亚洲一区二区视频在线观看| 久久精品国产亚洲aⅴ| 亚洲一级在线观看| 国产精品国内视频| 欧美在线亚洲在线| 欧美成人激情视频免费观看| 久久影院亚洲| 国产精品狠色婷| 欧美在线日韩| 久久人人爽爽爽人久久久| 欧美日韩国产区| 樱桃成人精品视频在线播放| 欧美大片91| 欧美性猛片xxxx免费看久爱| 在线观看国产精品网站| 亚洲东热激情| 亚洲欧美日韩一区在线| 国产三区二区一区久久| 欧美成人亚洲| 欧美偷拍另类| 久热精品在线| 欧美性片在线观看| 免费亚洲一区二区| 久久国产精品一区二区三区| 又紧又大又爽精品一区二区| 亚洲伦理久久| 国产亚洲综合在线| 亚洲精品欧美精品| 国内揄拍国内精品少妇国语| 日韩午夜电影av| 在线成人免费视频| 一区二区三区日韩| 欧美日韩一区免费| 六十路精品视频| 欧美视频在线观看视频极品| 免费欧美日韩| 国产精品入口66mio| 亚洲第一网站| 国产一区二区三区自拍| 亚洲另类春色国产| 在线看视频不卡| 久久―日本道色综合久久| 欧美视频日韩| 男人的天堂成人在线| 国产精品自在线| 欧美伊人久久| 欧美日韩午夜剧场| 欧美不卡高清| 一色屋精品视频在线看| 先锋影音国产精品| 亚洲欧美一区二区三区久久| 欧美日韩国产片| 亚洲欧洲在线观看| 欧美日韩在线不卡| 欧美h视频在线| 国内视频精品| 午夜精彩国产免费不卡不顿大片| 亚洲午夜国产成人av电影男同| 久久久夜夜夜| 你懂的亚洲视频| 羞羞色国产精品| 欧美一区午夜精品| 国产日韩欧美亚洲一区| 新片速递亚洲合集欧美合集| 久久精品国产免费| 亚洲国产精品99久久久久久久久| 亚洲综合999| 国产精品日本| 亚洲最黄网站| 亚洲视频日本| 亚洲欧美三级在线| 亚洲欧美日韩一区二区三区在线观看 | 久久精品夜色噜噜亚洲a∨| 久久精品成人一区二区三区| 国产亚洲毛片在线| 久久精品视频网| 欧美凹凸一区二区三区视频| 亚洲国产日日夜夜| 欧美人与性禽动交情品 | 一色屋精品视频免费看| 久久精品国产精品亚洲综合| 免费观看30秒视频久久| 亚洲国产精品一区二区www| 免费观看一区| 中文国产亚洲喷潮| 久久久久久久高潮| 亚洲第一狼人社区| 欧美日韩在线另类| 欧美一区二区视频免费观看 | 亚洲一区综合| 国产精品一区二区三区观看| 欧美在线视频观看| 亚洲电影有码| 性色一区二区| 亚洲国产欧美日韩另类综合| 欧美精品激情| 狂野欧美激情性xxxx欧美| 一色屋精品视频免费看| 欧美激情一区二区三区成人| 亚洲深夜av| 欧美国产日韩视频| 亚洲在线网站| 黄页网站一区| 欧美专区亚洲专区| 亚洲黑丝在线| 欧美在线网址| av成人免费在线| 国产性猛交xxxx免费看久久| 欧美日韩高清在线观看| 久久精品一区二区三区中文字幕| 亚洲理伦电影| 亚洲福利电影| 久久手机精品视频| 午夜精品久久久久久久白皮肤 | 亚洲精品国产视频| 久久精品国产69国产精品亚洲| 日韩视频永久免费观看| 激情小说另类小说亚洲欧美 | 亚洲小说欧美另类婷婷| 国内精品久久国产| 国产亚洲激情在线| 亚洲视频免费看| 欧美va亚洲va日韩∨a综合色| 亚洲欧美日韩天堂一区二区| 99天天综合性| …久久精品99久久香蕉国产| 国产伦精品一区二区三区在线观看| 欧美金8天国| 欧美xxx在线观看|