变位词程序c++实现

原创 2015年07月07日 20:50:55

#include <stdio.h>

#include <string.h>

#include <vector>

#include <string>

#include <algorithm>

#include <iostream>

using namespace std;

const int MAX_N = 100+5;

const int MAX_WORDS = 1000;//设置最多可对1000个变位词进行处理

char line[MAX_N];//读文件的缓冲区


struct words{

    char word[MAX_N];

    char sign[MAX_N];

}a[MAX_WORDS];//变位词结构体,word为单词本身,sign为单词的键值


bool operator < (const words &c, const words &d){

    if(strcmp(c.sign,d.sign)<0)

        return true;

    else

        return false;

}// 运算符重载,为了使用sort函数对结构体进行排序


int main(){

    FILE *fp1 = fopen("/Users/mona/changeWords/changeWords/1.txt","r");

    char oldSign[MAX_N] = " ";

    int cnt = 0;//记录单词个数

    while(fgets(line,MAX_N,fp1)){

        int pos;

        pos = int(strlen(line));

        if(line[pos-1]=='\n'line[pos-1] = '\0';

        strcpy(a[cnt].word,line);

        sort(line,line+strlen(line));

        strcpy(a[cnt].sign,line);

        cnt ++;

    }

    sort(a,a+cnt);// 将具有相同标识的单词归拢到一起

    for(int i=0;i<cnt;i++){

        if(strcmp(oldSign,a[i].sign)!=0){

            printf("\n");

        }

        strcpy(oldSign,a[i].sign);

        printf("%s ",a[i].word);

        

    }

    printf("\n");


    return 0;

}

相关文章推荐

变位词程序的实现

《编程珠玑》第二章有一个变位词程序的实现问题,所谓变位词就是把某个单词中字母位置顺序加以改变形成的新词。文中提到的变位词程序设计思想是按三阶段的”管道“组织,第一阶段标志单词,第二阶段排序标志后的文件...

小程序:递归实现所有变位词的排列组合

找出一个单词的所有变位词,例如给到单词“stop”,找到对应的变位词“pots”和“tops”。 采用暴力解法的话,把所有的可能性都排列组合一遍,一个一个判断;在排列组合这步很适合用递归来实现,写了...

编程珠玑--第二章变位词程序的实现

题目描述:给定一个英语字典,找出其中的所有变位词集合。例如,“pots”、“stop”、“tops”互为变位词,因为每一个单词都可以通过改变其他单词中的字母的顺序来得到。 程序主要有三部分组成,si...

图灵杯-第四届“图灵杯”NEUQ-ACM 程序设计竞赛-J-简单的变位词

ACM模版描述题解简单的字符串排序去重问题,用 map 搞搞,打标签,然后用 vector 存储,搞搞事情,最后输出,多于 5 个输出前 5 个,少于 5 个,有几个输出几个……注意,去重的时候只是去...
  • f_zyj
  • f_zyj
  • 2017年06月12日 01:17
  • 201

Programming Perals 变位词实现

网上讲这个问题的blog一大堆,不过我还是按着自己的思路把整个程序实现了一下,还有貌似我的实现方法和大部分讲这个的不一样。 问题引入: 给定一本英语单词词典,找出其中所有的变位词集。例如:因为”p...

变位词实现 编程珠玑一处错误

书中只实现了单词内部的排序而求得标记词,而并未实现单词之间的排序,所以运行结果按不符合作者预期结果,可能是作者的一个疏忽。 完善后代码如下: #include #include stri...

词典变位词检索系统【算法实现】

题目描述 在英文中,把某个单词字母的位置(顺序)加以改变所形成的新字词,叫做anagram,不妨译为变位词。譬如said(say的过去式)就有dais(讲台)这个变位词。在中世纪,这种文字游戏盛行于...

列变位法解密----2015年百度之星程序设计大赛 - 资格赛

这个题呢,简单来说。只要把字符串按照列进行重排,然后在按行输出就行。确实是比较简单的一题了。但我还是做了很久,果然自己很渣啊,继续努力吧。Problem Description列变位法是古典密码算法中...

2015年百度之星程序设计大赛——资格赛(1002列变位法解密)

Problem Description 列变位法是古典密码算法中变位加密的一种方法,具体过程如下 将明文字符分割成个数固定的分组(如5个一组,5即为密钥),按一组一行的次序整齐排列,最后不足一组不放...

2015年百度之星程序设计大赛 - 资格赛:1002列变位法解密

列变位法解密  Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...
  • Han_kin
  • Han_kin
  • 2015年06月03日 20:38
  • 440
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:变位词程序c++实现
举报原因:
原因补充:

(最多只允许输入30个字)