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

xiaoguozi's Blog
Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習慣原本生活的人不容易改變,就算現狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預料,人們需要更細心的觀察別人,要隨時注意才能保護別人,因為他們未必知道自己要什么·····
今天做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,狀態轉移是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,相當于STACK_OVERFLOW ,先是郁悶。。。。
玩了花了N多時間查找哪錯問題了。。。。
沒辦法時加了句 i-vec[j].size()<N于是奇跡出現了Accepted.....汗
于是想問下各位路過大牛,,題目明顯是i<N,i-vec[j].size()<N不是就成了句廢話了。。。。無語.....
我碰到類似dp,用dp[i+len[j]]>dp[i]+1 dp[i+len[j]]=dp[i]+1轉換下,就不會出現此問題,,而用dp[i-len[j]]+1<dp[i],dp[i]=dp[i-len[j]]+1問題就出現了。。。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>
            亚洲影院高清在线| 亚洲国产另类 国产精品国产免费| 精品91免费| 久久黄色网页| 亚洲一区二区在| 国产精品自拍在线| 欧美一区亚洲二区| 亚洲黄色精品| 麻豆免费精品视频| 亚洲电影有码| 国产一区二区剧情av在线| 另类欧美日韩国产在线| 亚洲免费不卡| 免费观看在线综合| 在线视频中文亚洲| 在线成人欧美| 国产日韩高清一区二区三区在线| 欧美黑人一区二区三区| 久久国产乱子精品免费女| 日韩一级裸体免费视频| 久久久久久久久久久一区| 午夜激情综合网| 99在线精品视频| 最近中文字幕日韩精品| 国产综合视频在线观看| 国产视频欧美| 国产又爽又黄的激情精品视频| 欧美日韩在线不卡一区| 欧美精品一区二区三| 欧美国产日韩一区二区| 狂野欧美激情性xxxx欧美| 久久国产欧美精品| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲精品欧美日韩专区| 亚洲精品小视频在线观看| 91久久国产自产拍夜夜嗨| 亚洲肉体裸体xxxx137| 亚洲三级视频| 亚洲欧美日本在线| 亚洲欧美福利一区二区| 久久gogo国模啪啪人体图| 久久久久欧美精品| 欧美一区二区三区四区在线| 一区二区欧美在线| 亚洲欧美一区二区视频| 老司机精品视频一区二区三区| 老司机aⅴ在线精品导航| 亚洲欧洲综合另类| 在线一区观看| 久久只有精品| 欧美日韩国产页| 国产精品永久免费视频| 亚洲福利视频专区| 一区二区在线观看av| 最新亚洲一区| 可以看av的网站久久看| 亚洲精品免费电影| 久久久蜜臀国产一区二区| 欧美三区在线| 亚洲黄色成人| 久久乐国产精品| 一级日韩一区在线观看| 久久深夜福利| 国产麻豆精品久久一二三| 亚洲欧洲综合另类| 久久久久久自在自线| 91久久精品久久国产性色也91| 久久综合色婷婷| 亚洲欧美日韩在线一区| 欧美片在线播放| 亚洲精品日日夜夜| 免费看精品久久片| 欧美一区二区成人6969| 欧美精品导航| 亚洲国产精品一区二区尤物区| 欧美一区二区在线视频| 在线中文字幕不卡| 欧美四级剧情无删版影片| 亚洲午夜精品久久| 一本到12不卡视频在线dvd| 国产精品www.| 亚洲视频欧美在线| 亚洲精品欧美一区二区三区| 欧美三级资源在线| 久久久久久九九九九| 一区二区三区视频在线| 免费日韩成人| 欧美刺激性大交免费视频| 在线观看一区| 日韩一级成人av| 国产精品网红福利| 免费成人av在线看| 久久综合一区二区三区| 亚洲九九精品| 新狼窝色av性久久久久久| 原创国产精品91| 99在线精品观看| 黑人巨大精品欧美一区二区| 亚洲精品国产精品国自产在线| 欧美日韩视频| 蜜臀av性久久久久蜜臀aⅴ| 免费永久网站黄欧美| 欧美伊人久久| 欧美日韩一区二区免费视频| 久久久久久久97| 国产欧美精品一区二区三区介绍| 欧美国产乱视频| 国产一区深夜福利| 夜夜嗨av色综合久久久综合网| 国产日韩欧美在线一区| 99ri日韩精品视频| 亚洲福利免费| 久久不射网站| 亚洲视频观看| 久久精品亚洲国产奇米99| 亚洲欧美视频| 国产精品女主播在线观看| 亚洲美女尤物影院| 国产精品99久久久久久久vr| 欧美成人按摩| 亚洲视频二区| 欧美午夜不卡视频| 中国成人亚色综合网站| 日韩亚洲欧美高清| 欧美日本中文| 亚洲午夜小视频| 亚洲欧美三级伦理| 国产欧美日韩一区二区三区在线观看 | 国产女人水真多18毛片18精品视频| 日韩视频免费观看高清在线视频| 在线观看成人av电影| 久久精品国产99国产精品澳门| 久久久久久久尹人综合网亚洲 | 99国产精品99久久久久久粉嫩 | 一区二区三区国产精华| 欧美三级视频在线| 亚洲欧美综合国产精品一区| 蜜臀av国产精品久久久久| 亚洲激情综合| 亚洲综合精品一区二区| 黄色成人精品网站| 欧美日韩美女| 欧美一区二区国产| 日韩午夜电影在线观看| 亚洲一区视频在线| 国产欧美丝祙| 久久久99国产精品免费| 久久九九99| 亚洲激情在线| 国产精品video| 亚洲自拍16p| 久久成人精品视频| 国产一区二区三区在线观看免费| 欧美在线看片a免费观看| 久久久久久亚洲精品杨幂换脸 | 欧美在线网站| 国产精品视区| 欧美主播一区二区三区| 欧美激情日韩| 国产精品乱码久久久久久| 欧美电影免费观看高清完整版| 一本久久a久久免费精品不卡| 欧美一区二区精美| 亚洲一区区二区| 亚洲国产精品久久| 亚洲国产精品ⅴa在线观看| 亚洲精品字幕| 亚洲专区在线| 久久久免费精品| 久久精品99| 一区二区欧美在线| 久久免费少妇高潮久久精品99| 亚洲一区二三| 久久综合五月天婷婷伊人| 这里只有精品在线播放| 久久超碰97人人做人人爱| 国内精品久久久久久影视8 | 好看的av在线不卡观看| 欧美黑人国产人伦爽爽爽| 国产午夜精品久久久久久久| 亚洲精品日韩激情在线电影| 亚洲高清不卡av| 国产精品国产成人国产三级| 美玉足脚交一区二区三区图片| 欧美日韩国产在线观看| 蜜臀久久久99精品久久久久久| 久久久久久高潮国产精品视| 亚洲美女福利视频网站| 欧美在线免费| 欧美一区二区视频在线观看| 免费亚洲电影| 久久影院亚洲| 狠狠色丁香婷综合久久| 亚洲色无码播放| 欧美一区二区三区免费观看视频| 欧美视频一区二区三区…| 一本色道**综合亚洲精品蜜桃冫 | 亚洲免费av片| 亚洲激情av在线| 久久视频免费观看|