简答题
1、给一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么b是a的兄弟单词,比如单词army和mary互为兄弟单词。
现在要给出一种解决方案,通过用户输入的单词,根据给定的字典找出输入单词有哪些兄弟单词。请具体说明数据结构和查询流程,要求时间和空间效率尽可能地提高。
解答:这题考试的时候没做出来,我想把一个单词的所有字母组合计算出来都不会算。。。有点郁闷
后来上网找了下,用递归找出一个单词所有字母的组合。
#include<stdio.h>
void findAllWords(char* s,int start,int end){
int i,j,k;
char temp;
if(start==end){
for(i=0;i<end;i++)
printf("%c",s[i]);
printf("\n");
}
else{
k=start;
for(i=start;i<end;i++){
temp=s[i];
s[i]=s[k];
s[k]=temp;
findAllWords(s,start+1,end);
temp=s[i];
s[i]=s[k];
s[k]=temp