• Algorithm --> 字母重排


    字母重排

      输入一个字典(用***结尾),然后再输入若干单词。没输入一个单词w,都需要在字典中找出所有可以用w的字幕重排后得到的单词,并按照字典序从小到大的顺序在一行中输出,如果不存在,输出“:(”。单词间用空格隔开,且所有输入单词都由不超过6个小写字母组成。

    样例输入:
    tarp given score refund only trap work earn course *****
    aptr asdfg
    样例输出: part tarp trap :(

    程序:

    #include <iostream>
    #include <cstring>
    //#include <stdio.h>
    #include <stdlib.h>
    using namespace std;
    
    char word[2000][10], sorted[2000][10];
    
    //字符比较函数
    int cmpString(const void *a, const void *b)
    {
        return strcmp((char*)a, (char*)b);
    }
    
    //字符串比较函数
    int cmpChar(const void *a, const void *b)
    {
        return *(char*)a - *(char*)b;
    }
    
    int main()
    {
        int n = 0;
        while(true)
        {
            cin >> word[n];
            if(word[n][0] == '*') break;                             //遇到结束标注就终止
            n++;
        }
        qsort(word, n, sizeof(word[0]), cmpString);               //给所有单词排序
        for(int i = 0; i < n; i++)
        {
            strcpy(sorted[i], word[i]);
            qsort(sorted[i], strlen(sorted[i]), sizeof(char), cmpChar);  //给每个单词排序
        }
        
        char s[10];
        while(cin >> s)                              //读取字符串
        {
            qsort(s, strlen(s), sizeof(char), cmpChar);           //给输入单词排序
            bool found = false;
            for(int i = 0; i < n; i++)
            {
                if(!strcmp(sorted[i], s))
                {
                    found = true;
                    cout << word[i] << " ";                  //输出原始单词,而不是排序后的
                }
            }
            if(!found) cout << ":(";
            cout << endl;
        }
        return 0;
    }
  • 相关阅读:
    Ajax省市区无刷新单表联动查询
    Hadoop2.0、YARN技术大数据视频教程
    零基础DNET B/S开发软件工程师培训视频教程
    零基础DNET CS开发视频教程
    HTML5开发框架PhoneGap实战视频教程
    Web前端开发视频教程
    FluentData 轻量级.NET ORM持久化技术详解
    前端 MVVM 框架KnockOut.JS深入浅出视频教程
    ASP.NET Web开发项目实战视频教程
    零基础到CS开发高手通用权限管理系统全程实录
  • 原文地址:https://www.cnblogs.com/jeakeven/p/4630841.html
Copyright © 2020-2023  润新知