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

xiaoguozi's Blog
Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習(xí)慣原本生活的人不容易改變,就算現(xiàn)狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預(yù)料,人們需要更細(xì)心的觀察別人,要隨時注意才能保護(hù)別人,因?yàn)樗麄兾幢刂雷约阂裁础ぁぁぁぁ?/span>
今天做ural 1002,題目描述:
1002. Phone numbers
Time Limit: 2.0 second
Memory Limit: 16 MB

Background

In the present world you frequently meet a lot of call numbers and they are going to be longer and longer. You need to remember such a kind of numbers. One method to do it in an easy way is to assign letters to digits as shown in the following picture:

	1 ij	2 abc	3 def
4 gh	5 kl	6 mn
7 prs	8 tuv	9 wxy
0 oqz
This way every word or a group of words can be assigned a unique number, so you can remember words instead of call numbers. It is evident that it has its own charm if it is possible to find some simple relationship between the word and the person itself. So you can learn that the call number 941837296 of a chess playing friend of yours can be read as WHITEPAWN, and the call number 2855304 of your favourite teacher is read BULLDOG.

 

Problem

Write a program to find the shortest sequence of words (i.e. one having the smallest possible number of words) which corresponds to a given number and a given list of words. The correspondence is described by the picture above.

Input

Input contains a series of tests. The first line of each test contains the call number, the transcription of which you have to find. The number consists of at most 100 digits. The second line contains the total number of the words in the dictionary (maximum is 50000). Each of the remaining lines contains one word, which consists of maximally 50 small letters of the English alphabet. The total size of the input file doesn't exceed 300KB. The last line of input file contains call number -1.

Output

Each line of output contains the shortest sequence of words which has been found by your program. The words are separated by single spaces. If there is no solution to the input data, the line contains text "No solution.". If there are more solutions having the minimum number of words, you can choose any single one of them.

Sample

input
output
7325189087
            5
            it
            your
            reality
            real
            our
            4294967296
            5
            it
            your
            reality
            real
            our
            -1
            
reality our
            No solution.
            


思路就是dp,狀態(tài)轉(zhuǎn)移是dp[i]=min(dp[i-len[j]]+1)(1<=j<=n)
code:
#include <iostream>
#include 
<string>
#include 
<algorithm>
#include 
<stack>
#include 
<vector>

using namespace std;
//#pragma comment(linker, "/STACK:16777216")

const int N=105;
const int M=50001;
int dp[N];
int pathone[N];
int pathtwo[N];
int hash[26]={2,2,2,3,3,3,4,4,1,1,5,5,6,6,0,7,0,7,7,8,8,8,9,9,9,0};
vector
<string> vec,v;
vector
<int> ve;
void Init()
{
    memset(dp,
0,sizeof(dp));
    memset(pathone,
0,sizeof(pathone));
    memset(pathtwo,
0,sizeof(pathtwo));
    vec.clear();
    v.clear();
    ve.clear();
};
int main()
{
    
string ss;
    
while(cin>>ss){
        
if(ss=="-1")break;
        Init();
        
int n;
        cin
>>n;
        
string str;
        
for(int i=0;i<n;i++){
            cin
>>str;
            v.push_back(str);
            
string tmp;
            
for(int j=0;j<str.size();j++){
                tmp
+=hash[str[j]-'a']+48;
            }
            vec.push_back(tmp);
        }
        dp[
0]=1;
        
for(int i=1;i<=ss.size();++i){
            
for(int j=0;j<vec.size();++j){
                
if(i-vec[j].size()>=0&&dp[i-vec[j].size()]>0){
                                   
if(vec[j]==ss.substr(i-vec[j].size(),vec[j].size())&&(dp[i]==0||dp[i]>dp[i-vec[j].size()]+1)){
                        dp[i]
=dp[i-vec[j].size()]+1;
                        pathone[i]
=j;
                        pathtwo[i]
=i-vec[j].size();
                    }
                }
            }
        }
        
if(dp[ss.size()]==0){
            cout
<<"No solution.\n";
        }
        
else{
            
int mm=ss.size();
            
//ve.push_back(mm);
            while(mm!=0){
                
//stk.push(v[pathone[mm]]);
                ve.push_back(mm);
                mm
=pathtwo[mm];
                
            }
            
for(int i=ve.size()-1;i>=0;i--){
                
if(i==ve.size()-1)cout<<v[pathone[ve[i]]];
                
else cout<<" "<<v[pathone[ve[i]]];
            }
            cout
<<endl;
        }
    }
    
return 0;
}
以上code ,(Crash), 看了FAQ,相當(dāng)于STACK_OVERFLOW ,先是郁悶。。。。
玩了花了N多時間查找哪錯問題了。。。。
沒辦法時加了句 i-vec[j].size()<N于是奇跡出現(xiàn)了Accepted.....汗
于是想問下各位路過大牛,,題目明顯是i<N,i-vec[j].size()<N不是就成了句廢話了。。。。無語.....
我碰到類似dp,用dp[i+len[j]]>dp[i]+1 dp[i+len[j]]=dp[i]+1轉(zhuǎn)換下,就不會出現(xiàn)此問題,,而用dp[i-len[j]]+1<dp[i],dp[i]=dp[i-len[j]]+1問題就出現(xiàn)了。。。RE,所以想問下原因,,,我以保證i-len[j]>=0&&i-len[j]<N(dp[N])
posted on 2008-04-05 16:21 小果子 閱讀(301) 評論(0)  編輯 收藏 引用 所屬分類: Acm
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            日韩视频一区二区在线观看| 亚洲精选在线观看| 欧美午夜精品久久久久久浪潮 | 在线视频精品| 国语精品中文字幕| 9l国产精品久久久久麻豆| 激情久久久久久| 亚洲欧美日本国产专区一区| 亚洲欧美在线视频观看| 欧美黄色精品| 亚洲人成网站777色婷婷| 国产亚洲综合在线| 亚洲欧美成人在线| 午夜久久tv| 国产精品老女人精品视频| 久久久久九九视频| 国产一区二区三区自拍| 欧美一级久久| 久久动漫亚洲| 国产在线精品一区二区中文| 日韩视频一区二区三区在线播放免费观看| 伊人久久av导航| 日韩亚洲不卡在线| 亚洲天堂男人| 国产精品亚洲综合天堂夜夜| 亚洲在线视频| 久久久久综合网| 亚洲国产精品第一区二区三区| 久久免费视频网| 亚洲人成亚洲人成在线观看| 亚洲一区欧美激情| 国产日韩欧美综合精品| 久久亚洲精品网站| 欧美成人精品影院| 一区二区三区日韩| 国产欧美一区二区精品性| 香蕉久久一区二区不卡无毒影院 | 欧美一区二区私人影院日本 | 欧美中文字幕精品| 一本久道久久综合婷婷鲸鱼| 欧美成人在线免费视频| 午夜精品视频在线| 欧美激情精品久久久久久蜜臀 | 国产精品久久久久久久久借妻| 久久久久久色| 欧美亚洲自偷自偷| 在线综合视频| 日韩午夜激情| 亚洲国产精品一区二区第四页av | 乱码第一页成人| 亚洲永久免费| 国产精品99久久久久久久vr| 亚洲欧洲一区二区三区在线观看| 国产精品亚洲一区二区三区在线| 欧美成人久久| 久久中文在线| 老司机亚洲精品| 欧美在线资源| 久久九九国产| 久久免费99精品久久久久久| 欧美伊人久久| 亚洲欧美日韩国产成人| 日韩一级精品视频在线观看| 亚洲高清123| 亚洲国产视频一区二区| 亚洲高清久久久| 亚洲国产精品ⅴa在线观看| 欧美本精品男人aⅴ天堂| 欧美成人一区二区| 亚洲人成人77777线观看| 亚洲欧洲日韩综合二区| 亚洲精品国精品久久99热| 日韩一级免费观看| 亚洲欧美清纯在线制服| 久久精品最新地址| 欧美国产精品日韩| 欧美日韩亚洲视频| 国产精品影片在线观看| 激情久久中文字幕| 99伊人成综合| 亚洲欧美日韩精品久久亚洲区| 欧美一区二区精美| 欧美va亚洲va国产综合| 亚洲精品国偷自产在线99热| 99国产精品| 午夜国产精品影院在线观看 | 久久婷婷久久一区二区三区| 久久蜜桃精品| 欧美视频中文字幕| 国产综合视频在线观看| 免费看av成人| 亚洲人成网在线播放| 亚洲乱码久久| 校园春色综合网| 久久综合狠狠综合久久激情| 欧美日产国产成人免费图片| 国产裸体写真av一区二区| 国产一区二区三区奇米久涩| 亚洲欧洲日本专区| 亚洲欧美久久久| 蜜臀99久久精品久久久久久软件| 亚洲二区在线观看| 欧美亚洲自偷自偷| 欧美精品一区二区三区很污很色的| 欧美视频四区| 亚洲国产欧美日韩精品| 性欧美长视频| 亚洲九九精品| 久久中文精品| 日韩一级不卡| 免费日韩视频| 国产欧美一区二区三区在线老狼 | 亚洲国产精品传媒在线观看 | 99一区二区| 久久频这里精品99香蕉| 国产精品日韩在线观看| 亚洲欧洲日本专区| 欧美成年人视频网站| 午夜影院日韩| 国产精品日韩在线播放| 亚洲视频每日更新| 亚洲国产精品视频一区| 久久久免费av| 狠狠色狠狠色综合日日tαg| 在线亚洲一区观看| 亚洲黄色av| 巨乳诱惑日韩免费av| 国精产品99永久一区一区| 欧美亚洲一级片| 亚洲女优在线| 国产啪精品视频| 欧美影片第一页| 亚洲欧美日韩中文播放| 国产精品久久久久av免费| 亚洲午夜伦理| 亚洲视频成人| 国产精品自拍三区| 欧美在线视屏| 欧美一区二区私人影院日本| 国产九区一区在线| 精品成人国产| 国产丝袜一区二区三区| 亚洲欧美日本视频在线观看| 亚洲深夜av| 国产丝袜美腿一区二区三区| 久久免费视频在线观看| 久久久夜色精品亚洲| 亚洲高清一区二| 欧美r片在线| 久久久人人人| 亚洲欧洲另类国产综合| 亚洲美女色禁图| 国产精品扒开腿爽爽爽视频| 午夜在线播放视频欧美| 欧美一区二区三区男人的天堂 | 美玉足脚交一区二区三区图片| 亚洲精品1区2区| 日韩一级大片在线| 国产精品一区二区a| 久久久久亚洲综合| 欧美成人69av| 欧美一级理论性理论a| 欧美在线首页| 亚洲精品国精品久久99热| av成人手机在线| 国产一区二区毛片| 亚洲人成在线播放网站岛国| 欧美三级资源在线| 久久精品免视看| 欧美福利视频| 午夜精品一区二区三区在线播放| 欧美一区二区三区在线观看视频| 红桃视频成人| avtt综合网| 亚洲福利视频三区| 99视频精品全部免费在线| 国产欧美一级| 亚洲国产精品日韩| 国产亚洲成av人片在线观看桃| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美成人午夜| 久久久蜜桃一区二区人| 欧美日韩四区| 猛男gaygay欧美视频| 欧美日韩在线不卡一区| 久久亚洲综合网| 欧美日韩另类在线| 欧美韩日视频| 国产日韩一区二区| 日韩亚洲成人av在线| 狠狠久久亚洲欧美| av成人老司机| 9l国产精品久久久久麻豆| 久久久久久久久伊人| 亚洲欧美欧美一区二区三区| 欧美成人精品h版在线观看| 久久精品国产一区二区三区免费看| 欧美乱在线观看| 亚洲第一区在线观看| 国产一区二区三区直播精品电影|