#头歌 算法 线性表排序的编程-Word Amalgamation(中文版)

第1关:Word Amalgamation(中文版)

题目描述

在美国数百万份报纸上都有一种叫做 Jumble 的文字游戏。这个游戏的目的是解决一个谜语,但为了找到出现在答案中的字母,有必要解读四个单词。你的任务是写一个可以解读文字的程序。

输入格式

输入包含四个部分:

  1. 词典,每行一个,字数不超过 100 个;
  2. 包含 XXXXXX 的行,表示字典的结束;
  3. 你必须整理的一个或多个杂乱的“单词”,每个单词单独在一行上;
  4. 另一行包含 XXXXXX,它表示文件的结束。

所有单词,包括字典单词和乱序单词,都只由小写英文字母组成,并且长度至少为一个,最多为六个字符。(注意,XXXXXX 包含大写。)字典不一定是按顺序排列的,但是字典里的每个单词都是唯一的。

输出格式

对于输入中的每个打乱的单词,输出一个字典中所有单词的字母顺序列表,这些单词可以通过重新排列打乱的单词中的字母来形成。这个列表中的每个单词必须单独出现在一行上。如果列表是空的(因为没有字典单词可以形成),输出行 NOT A VALID WORD 代替。在这两种情况下,输出包含 6 个星号的行来表示列表的结束。

输入输出样例

输入
 
  1. tarp
  2. given
  3. score
  4. refund
  5. only
  6. trap
  7. work
  8. earn
  9. course
  10. pepper
  11. part
  12. XXXXXX
  13. resco
  14. nfudre
  15. aptr
  16. sett
  17. oresuc
  18. XXXXXX
输出
 
  1. score
  2. ******
  3. refund
  4. ******
  5. part
  6. tarp
  7. trap
  8. ******
  9. NOT A VALID WORD
  10. ******
  11. course
  12. ******

最后通关代码

#include <cstdio>

#include <cstring>

#include <string>

#include <iostream>

#include <algorithm>

#include <stdlib.h>

#include <cmath>

using namespace std;

struct node

{

    string a;

    string b;

}x[120];

bool cmp(node a,node b)

{

    return a.a<b.a;

}

int main()

{

    string s,t;

    int d=0;

    while(cin >> s)

    {

        if( s == "XXXXXX")

        {

            break;

        }

        x[d].a=s;

        sort(s.begin(),s.end());

        x[d++].b=s;

    }

    sort(x,x+d,cmp);

    while(cin >> s)

    {

        if( s == "XXXXXX")

        {

            break;

        }

        int flag = 0;

        sort(s.begin(),s.end());

        for(int i = 0;i < d;i++)

        {

            if(x[i].b==s)

            {

                cout<<x[i].a<<endl;

                flag=1;

            }

        }

        if(flag == 0)

        cout << "NOT A VALID WORD"<<endl;

        cout << "******"<<endl;

    }

    return 0;

}

  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值