急用:c++数据结构 变形词问题

nathanielzm 2014-05-14 11:19:57
原题:如果2个单词有相同的字母组成,但字母的次序不同,则称它们互为变形词。例如:单词POST和STOP就是变形词。变形词组的大小就是一组分开,输入由互为变形词的词组中单词的数目。给定一本词典的单词,统计该词典中的各变形词组的大小。
输入:输入的词典由一个文本文件提供,词典中没有相同的单词。单词由小写字母组成,单词之间由空格或换行符分开,词典中的单词数不超过3000个。
输出:按词组从大到小的顺序输出每个变形词组的大小和词组中的单词。大小相同的变形词组按字典序排列,组内单词也按字典序排列。

请大神详细写出一个完整的和此题匹配的程序。编译通过立即结题给分。
PS:本人是论坛新手,此题是我的一道作业题,实在做不出来了,还望大神理解。
...全文
323 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-05-30
  • 打赏
  • 举报
回复
代码注释要说明why,不要说明what或how
翅膀又硬了 2014-05-22
  • 打赏
  • 举报
回复
引用 8 楼 buyong 的回复:
一种算法:计算每个单词中使用每个字母的次数,完全一样的就是变形词。
额,又一个真正的程序员
TheNewIpad 2014-05-21
  • 打赏
  • 举报
回复
变形词组的大小就是一组分开,输入由互为变形词的词组中单词的数目。 怎么就看不懂呢?
纹枰老妖 2014-05-21
  • 打赏
  • 举报
回复
引用 9 楼 u011445382 的回复:
[quote=引用 7 楼 zhao4zhong1 的回复:] [quote=引用 6 楼 u011445382 的回复:] [quote=引用 1 楼 zhao4zhong1 的回复:] C++ primer里面好象有现成的例子。
麻烦能给个大概位置吗?我没看过这本书,刚刚下载了电子版的,一共一千多页,不知道在哪个章节。[/quote] 第6章 刚看了一下,虽然和题目要求不一样,但也可供参考。[/quote] 好的,我看看如果可以的话,就把分给您吧,谢谢。[/quote] 慢着,有点挑战性,我现在准备开写。。。
纹枰老妖 2014-05-21
  • 打赏
  • 举报
回复
忙了整整一下午!真可谓是焦头烂额,现在还好点,刚写的代码可谓说是漏洞百出。但就算是现在,依然是半解的答案【最多是完成62%吧 掩面中。。。】,但实在很抱歉,我要去做饭了,不足的地方,还请楼主自撸了
纹枰老妖 2014-05-21
  • 打赏
  • 举报
回复
#include "stdio.h"
int c[1000];
int he[100],ji[100]; /*声明和数组,积数组*/
int tj[100],px[100];  /* 声明统计数组,排序大小数组  */
int *cp[100];    /* 为每个单词分配空间 */
int *ew[100][100]; /* 声明一个二维数组 */

void main()
{
	
	int a=0,b=0,d=0,e=0,i=0,j=0,*shan;
    for(i=0;i<100;i++) ji[i]=1; 
    i=0;
    
    for(i=0;(c[i]=getchar())!='\n';i++);
    
   
    while(j<i)
    {
    	if(c[j] != ' '&&c[j]!=0) 
    	{
           cp[a] = &c[j];
    	   
    	   while(c[j] != ' '&&c[j]!=0)
    	   {
    	     he[a] += c[j]; 
    	     ji[a] *= c[j];
    	     j++;  
    	   }
    	    
    	   a++;
    	}
    	j++;
    }  /* 给每个单词区分开来 */
   
    printf("现在执行找变形单词,a是%d\n",a);
    j=0;
    for(i=0;i<a;i++)
    {
    	for(b=i+1;b<a;b++)
    	{
            if(he[i]==he[b] && he[i]!=0 && ji[i]==ji[b] &&cp[b]!=0)
    		{
    			j=1;
    			ew[d][0] = cp[i];
    			ew[d][++e] = cp[b];
    			cp[b]=0;
    		
    		}
    	}
    	
    	if(1==j)
    	{
    		
    		d++;
    		j=0;
    	}
    	e=0;
    } /* 匹配出所有的变形单词 */
  
    for(i=0;i<d;i++)
    {
    	for(a=0;*(ew[i][0]+a)!=' ' && ew[i][0]+a!=0;a++)
    	  tj[i]++;
    }
   
    for(i=0;i<d;i++)
    {
    	for(j=0,a=0;j<d;j++)
    	{
    		if(a<tj[j])
    		{
    			px[i]=j;
    			a=tj[j];
    			shan=&tj[j];
    		}
    	}
    	*shan=0;
    }  /* 根据单词包含的字母多少排序 */
    
    for(i=0;i<d;i++)
    {
    	while(*ew[px[i]][0]!=' '&&ew[px[i]][0]!=0)
    	{
    		printf("%c",*ew[px[i]][0]);
    		ew[px[i]][0]++;
    	}
    	printf("\n");
    }
    
    
 
    
}
j8daxue 2014-05-19
  • 打赏
  • 举报
回复
引用 9 楼 u011445382 的回复:
[quote=引用 7 楼 zhao4zhong1 的回复:] [quote=引用 6 楼 u011445382 的回复:] [quote=引用 1 楼 zhao4zhong1 的回复:] C++ primer里面好象有现成的例子。
麻烦能给个大概位置吗?我没看过这本书,刚刚下载了电子版的,一共一千多页,不知道在哪个章节。[/quote] 第6章 刚看了一下,虽然和题目要求不一样,但也可供参考。[/quote] 好的,我看看如果可以的话,就把分给您吧,谢谢。[/quote] 2F回复看了么?
nathanielzm 2014-05-16
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
[quote=引用 6 楼 u011445382 的回复:] [quote=引用 1 楼 zhao4zhong1 的回复:] C++ primer里面好象有现成的例子。
麻烦能给个大概位置吗?我没看过这本书,刚刚下载了电子版的,一共一千多页,不知道在哪个章节。[/quote] 第6章 刚看了一下,虽然和题目要求不一样,但也可供参考。[/quote] 好的,我看看如果可以的话,就把分给您吧,谢谢。
赵4老师 2014-05-15
  • 打赏
  • 举报
回复
引用 6 楼 u011445382 的回复:
[quote=引用 1 楼 zhao4zhong1 的回复:] C++ primer里面好象有现成的例子。
麻烦能给个大概位置吗?我没看过这本书,刚刚下载了电子版的,一共一千多页,不知道在哪个章节。[/quote] 第6章 刚看了一下,虽然和题目要求不一样,但也可供参考。
buyong 2014-05-15
  • 打赏
  • 举报
回复
一种算法:计算每个单词中使用每个字母的次数,完全一样的就是变形词。
ri_aje 2014-05-14
  • 打赏
  • 举报
回复
sort + hash_table 就可以。
j8daxue 2014-05-14
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/390776385
赵4老师 2014-05-14
  • 打赏
  • 举报
回复
C++ primer里面好象有现成的例子。
nathanielzm 2014-05-14
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
C++ primer里面好象有现成的例子。
麻烦能给个大概位置吗?我没看过这本书,刚刚下载了电子版的,一共一千多页,不知道在哪个章节。
nathanielzm 2014-05-14
  • 打赏
  • 举报
回复
引用 4 楼 u012514171 的回复:
引用 3 楼 ri_aje 的回复:
sort + hash_table 就可以。
可以尝试下这个,直接给代码不利于学习,自己多想想,多思考,编译不过的在这里贴出代码帮你分析
c++学的太差了,现在正回头去看c++呢,刚刚看到类那块了。不过实在编不出来了。之前有个帖子是我同学发的,他算是我们组里最懂的了,不过他也没怎么懂。。。。求助大神啊,这几天大神给编个主要程序出来也行。
lanlvy 2014-05-14
  • 打赏
  • 举报
回复
引用 3 楼 ri_aje 的回复:
sort + hash_table 就可以。
可以尝试下这个,直接给代码不利于学习,自己多想想,多思考,编译不过的在这里贴出代码帮你分析

64,663

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧