很有意思小程序 但就是没办法实现 需求帮助 (给全分)

skyingeye 2005-03-18 03:31:41
大家都知道电话吧,在按键2-9之间都有字母

2下面字母有 ABC
3 下面字母有 DEF
4 下面字母有GHI,
5 下面有 JKL
6 。。。。。
7
8
9下面有WXYZ
现在已经给定一个字典

我们输入234,
那么 2,3,4下面字母开始组合,因为我们第一个字母输入的是2 所以字母组合只能以
a 或b 或c开头 例如 adg,adh,adi,bdg,bdh.....
然后到给定的字典里匹队 是否存在 。
需求程序,谢谢
...全文
745 27 打赏 收藏 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhousqy 2005-03-29
  • 打赏
  • 举报
回复
up
nicknide 2005-03-29
  • 打赏
  • 举报
回复
如果效率和内存不是重点,可以用筛选法求子集,原理简单,就不多说了。
cxyol 2005-03-20
  • 打赏
  • 举报
回复
阿尔卡特的也是
justioo 2005-03-20
  • 打赏
  • 举报
回复
我以前用的手机sony Z28 中的电话薄用的就是这种查找方式,不错的哟
herder75 2005-03-20
  • 打赏
  • 举报
回复
t9
zengwujun 2005-03-20
  • 打赏
  • 举报
回复
学习
ryth 2005-03-20
  • 打赏
  • 举报
回复
mark
conquer2004 2005-03-20
  • 打赏
  • 举报
回复
关注ing
dewdrop 2005-03-19
  • 打赏
  • 举报
回复
对于所有的字母的能组合与相应的数字做好对应做成一个数字字典
比如234--〉bei 22--〉ba\ca
再将此字典存于一map<string,vector<string>> dictionary;
然后就可以用words[input_number]将次数字的组合逐个列出
其中input_number是要输入的数字组合
yyhzpk 2005-03-19
  • 打赏
  • 举报
回复
声母,韵母分开,
tudou614 2005-03-19
  • 打赏
  • 举报
回复
MARK
style1984 2005-03-19
  • 打赏
  • 举报
回复
我能作的是





一下
zhousqy 2005-03-19
  • 打赏
  • 举报
回复
up
weiwei54321 2005-03-19
  • 打赏
  • 举报
回复
呵呵。我是新人。刚学。只能看看。
arrowcy 2005-03-19
  • 打赏
  • 举报
回复
其实这个问题的关键在于两点,一是,选择合适的搜索算法提高搜索效率,同时又尽量少的占有内存,二是,将数字表示转换为字母序列,或者直接用数字来搜索。
pcboyxhy 2005-03-18
  • 打赏
  • 举报
回复
正向和逆向都是可以的。
happy__888已经介绍了逆向的方式。

正向的可以这样考虑,
定义集合
h[2] = "ABC"
h[3] = "DEF"
h[4] = "GHI"
............

假设当前已经得到输入序列
str[ ], str是一个长度为 n 的int数组。
采用伪代码描述,
int make_word(int index)
{
if(index==n)
{
对已经生成的序列word在字典中进行折半查找,符合的就加入单词集合。
return 0;
}

for(int i=0; i<strlen(h[str[index]]); ++i)
{
word[index] = h[str[index]][i];
make_word(index+1);
//extend..
}
return 0;
}



这只是一个朴素的枚举法,
没有任何优化,
具体使用的时候可以extend...处加入判断,可以提前停止对不匹配的字符串的生成。

仅仅是个思想
自己体会吧。

Jackey_xiao 2005-03-18
  • 打赏
  • 举报
回复
有人会用VC做跳棋么?我有源码,下的别人的,不过没注释,看不懂,想请各位高手帮帮忙,给加加注释
Jackey_xiao 2005-03-18
  • 打赏
  • 举报
回复
/*TzqDate 类为跳子棋各个棋格的属性 */
struct TzqDate{
int nArea; //当前棋格属于区域
int nPRI[6];//[0-5]当前棋格的各个方向的优先级,上为b[0]
int nColor; //当前棋格上棋子的颜色
TzqDate *pTzq[6];//[0-5]当前棋子的各个方向为第几棋子,逆时针,右上主第一方向(d[0]);
int n_x;
int n_y;
int nQz;
};


struct CPlace{
TzqDate * pTzq;
CArray<int,int> nPlaceArray;
int nTestUD;
};

各位帮我看看这个跳棋头文件里的联会个结构体怎么理解啊,尤其是CArray<int,int> nPlaceArray;
是什么意思啊
寻开心 2005-03-18
  • 打赏
  • 举报
回复
? 呵呵, 要不劳而获?
对于字典当中的每个单词,按照上述规则进行解析
然后对解析出来的数字做索引,具体的如何索引,自己搞定吧
arrowcy 2005-03-18
  • 打赏
  • 举报
回复
还是上次问的那个人吗?估计要别人给程序还是比较麻烦吧,我记得已经有很多人提供了方案了阿
加载更多回复(7)

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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