【♂Not The Triumph♂O(∩_∩)O哈哈~But The Struggle♂】

竞赛决不是捷径,它只是另一种艰辛的生活方式。得到与失去,只有时间会去评判;成功与失败,只有历史能去仲裁。我不会永远成功,正如我不会永远失败一样

  C++博客 :: 首页 :: 联系 ::  :: 管理
  6 Posts :: 239 Stories :: 25 Comments :: 0 Trackbacks

常用链接

留言簿(7)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 108476
  • 排名 - 229

最新评论

阅读排行榜

评论排行榜

一个叫"one"的物体跟它的朋友"puton"交流是很有趣的。"One"能说单词"out"和"output",此外还能叫出它的朋友的名字。"Puton"能说的词为"in","input","one",它们互相沟通得很好,现把对话写成为字符串(不含空格)。

现有N个字串, 其中一部分是它们的对话。你要知道,每一个对话都是很重要的。空行也是很重要的。请从其中找出重要的字符串。

input:
在第一行有一个非负整数(N <= 1000),接下来N行为字符串。每一个字符串包含小写字母。所有字符串的总长度不超过10^7个字符。

output:
输出包含N行。假如字符串是重要的,输出"YES",否则输出"NO"。

input:
6
puton
inonputin
oneputonininputoutoutput
oneininputwooutoutput
outpu
utput

output:
YES
NO
YES
NO
NO
NO


【参考程序】:
#include<iostream>
#include<cstring>
using namespace std;
char str[7][10]={"","out","output","puton",
                                          "in","input","one"};
int len[7]={0,3,6,5,2,5,3};
bool bo[8000001];
char ss[8000001];
int n;
bool tf(int x,char *y)
{
    for (int i=x,j=strlen(y)-1;j>=0;j--,i--)
        if (ss[i]!=y[j]) return false;
    return true;
}
int main()
{
    scanf("%d\n",&n);
    for (int k=1;k<=n;k++)
    {
        gets(ss);
        int ls=strlen(ss);
        memset(bo,false,sizeof(bo));
        bo[0]=true;
        for (int i=0;i<ls;i++)
        {
            for (int j=1;j<=6;j++)
                if (i+1>=len[j])
                {
                    if (tf(i,str[j]))
                        if (bo[i+1-len[j]])
                            bo[i+1]=true;
                }
        }
        if (bo[ls]) printf("YES\n");
        else printf("NO\n");
    }
    return 0;
}

posted on 2009-06-02 13:51 开拓者 阅读(207) 评论(0)  编辑 收藏 引用 所属分类: URAL 题解

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理