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

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>
            国产精品久久久久影院亚瑟 | 欧美日韩免费网站| 欧美一区二区三区婷婷月色| 亚洲精品在线免费| 欧美好骚综合网| 久久爱www.| 欧美一区二区三区视频| 国产精一区二区三区| 国产嫩草一区二区三区在线观看 | 国产精品久久久久久模特| 亚洲国产视频a| 最近中文字幕日韩精品 | 久久成人精品| 欧美成人国产| 亚洲午夜精品久久| 欧美在线高清视频| 亚洲手机在线| 欧美亚洲一区三区| 韩国在线视频一区| 午夜久久资源| 久久国产精品久久久久久电车| 久久精品日韩| 亚洲一区日韩在线| 美女999久久久精品视频| 亚洲第一中文字幕在线观看| 午夜精品亚洲| 欧美诱惑福利视频| 国产精品美女主播| 亚洲美女视频在线免费观看| 精品不卡一区| 久久国产日韩| 亚洲国产一区二区三区a毛片| 亚洲免费在线精品一区| 欧美在线视频播放| 国产精品一区在线观看你懂的| 亚洲免费黄色| 亚洲视频在线观看网站| 欧美三级在线视频| 99一区二区| 亚洲欧美另类国产| 农村妇女精品| 久久精品国产免费观看| 久久久91精品国产一区二区三区 | 亚洲国产乱码最新视频| 亚洲精品自在久久| 亚洲午夜国产成人av电影男同| 一区二区久久| 国产精品美女久久久浪潮软件| 欧美一进一出视频| 久久一区二区视频| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲婷婷在线| 欧美午夜影院| 欧美在线免费看| 国产精品午夜国产小视频| 欧美在线国产| 欧美阿v一级看视频| 一区二区三区高清在线观看| 欧美黑人多人双交| 亚洲精品色婷婷福利天堂| 国产一区欧美日韩| 欧美华人在线视频| 亚洲级视频在线观看免费1级| 国产日韩欧美91| 亚洲精品视频中文字幕| 久久精品视频在线播放| 精品动漫3d一区二区三区免费| 欧美精品日本| 欧美日韩精品免费观看视频完整| 欧美一区二区三区视频免费| 一区二区高清在线| 一区二区三区.www| 亚洲自拍偷拍福利| 亚洲免费黄色| 亚洲国产精品一区二区第四页av | 亚洲一二三区精品| 午夜亚洲福利在线老司机| 久久亚洲综合网| 久久精品夜色噜噜亚洲a∨| 亚洲精品免费观看| 亚洲第一在线综合网站| 韩国精品在线观看| 一色屋精品视频在线看| 亚洲图片欧美一区| 欧美性猛交xxxx乱大交蜜桃| 欧美精品在线视频| 国产精品亚洲美女av网站| 国产精品一区二区三区久久| 狠狠综合久久| 在线观看91精品国产麻豆| 亚洲国产婷婷| 亚洲精品在线观| 亚洲影视在线播放| 欧美伊人久久| 久久精品国产77777蜜臀| 亚洲一区在线免费观看| 亚洲精品在线三区| 亚洲欧美色婷婷| 亚洲日本乱码在线观看| 亚洲在线中文字幕| 欧美日韩免费在线| 国产精品中文字幕欧美| 激情六月婷婷久久| 亚洲精品日韩久久| 欧美一区二区免费视频| 麻豆精品91| 艳女tv在线观看国产一区| 亚洲人成在线观看一区二区| 欧美一区在线看| 这里只有精品电影| 另类专区欧美制服同性| 欧美天堂亚洲电影院在线播放| 一区精品在线| 久久精品91久久香蕉加勒比 | 国产精品夜夜夜| 欧美视频在线观看免费网址| 国产一区二区| 最新亚洲激情| 久久久噜噜噜久久人人看| 欧美激情精品| 你懂的成人av| 亚洲高清不卡在线观看| 久久婷婷久久一区二区三区| 在线观看视频免费一区二区三区| 99国产精品99久久久久久| 玖玖综合伊人| 久久久99爱| 国产日韩欧美亚洲| 亚洲激情视频网| 久久久久88色偷偷免费| 亚洲国产精品美女| 国产精品久久久久毛片软件| 久久久精品国产免费观看同学| 久久久av毛片精品| 伊伊综合在线| 欧美激情一区二区| 欧美a级片网站| 亚洲美女视频在线观看| 亚洲一区视频在线| 午夜精品久久久久久久99樱桃| 久久这里有精品视频| 99视频有精品| 亚洲免费综合| 亚洲一级黄色片| 亚洲午夜精品福利| 一区二区三区在线观看国产| 久久免费高清视频| 免费不卡在线观看| 亚洲影院免费| 一区二区欧美日韩| 亚洲国产精品嫩草影院| 亚洲影院免费观看| 亚洲午夜极品| 欧美日韩国产欧美日美国产精品| 韩日精品视频一区| 亚洲精品久久久一区二区三区| 国产一区二区三区久久久久久久久| 亚洲视频在线观看一区| 日韩视频亚洲视频| 免费看av成人| 先锋影音久久久| 欧美日韩成人| 一区二区三区毛片| 亚洲综合首页| 亚洲电影成人| 日韩亚洲欧美在线观看| 欧美日韩精品一区二区天天拍小说| 在线亚洲精品| 久久综合色一综合色88| 亚洲蜜桃精久久久久久久| 中文无字幕一区二区三区| 国产免费成人av| 亚洲国产精品专区久久| 欧美日韩一区三区四区| 午夜精品久久久久影视| 久久综合成人精品亚洲另类欧美| 99国产精品久久| 欧美在线观看一二区| 久久精品人人爽| 麻豆精品视频在线观看| 亚洲国产日韩一区二区| 欧美激情第一页xxx| 一区二区三区四区国产| 麻豆国产精品va在线观看不卡| 午夜精品成人在线| 亚洲美女在线看| 日韩网站免费观看| 亚洲欧美在线观看| 日韩视频免费| 99国产精品私拍| 夜色激情一区二区| 亚洲视频一区| 亚洲欧美国产日韩中文字幕| 亚洲一级黄色| 久久国产精品久久w女人spa| 久热这里只精品99re8久| 欧美高清在线视频| 日韩一级片网址| 日韩一级黄色av| 久久免费国产|