社区
C++ 语言
帖子详情
一道很有挑战性的题目, 看你的算法了.
xwdok
2006-12-27 04:31:47
手机上的每个数字对应几个字母,给你一串数字,请你输出所有可能的字母串。要求是最好的算法
...全文
782
17
打赏
收藏
一道很有挑战性的题目, 看你的算法了.
手机上的每个数字对应几个字母,给你一串数字,请你输出所有可能的字母串。要求是最好的算法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
oo
2007-01-23
打赏
举报
回复
楼上:手机里 ‘2’对应‘ABC’,按一次2只能得到A,不会得到B或C,只有连按2次‘2’才能得到B,连按3次‘2’才能得到‘C’,所以输入‘23’只能得到‘AD’不会有其他的结果。
QuickKeyBoard
2007-01-21
打赏
举报
回复
#include <iostream>
using namespace std;
#define MAX 1000
char lib[10][5]=
{
"",
"",
"ABC",
"DEF",
"GHI",
"JKL",
"MNO",
"PQRS",
"TUV",
"WXYZ",
};
char s[MAX];
int n;
char out[MAX];
void fill(int k)
{
if(k==n)
{
out[n]='\0';
cout<<out<<endl;
return;
}
int i;
for(i=0;lib[s[k]-'0'][i];i++)
{
out[k]=lib[s[k]-'0'][i];
fill(k+1);
}
}
int main()
{
cin>>s;
n=strlen(s);
fill(0);
return 0;
}
这样。不写解释了。lz大约可以看懂。
输入23
则得
AD
AE
AF
BD
BE
BF
CD
CE
CF
Sco_field
2007-01-20
打赏
举报
回复
呵呵,越狱
心中那自由的世界
2007-01-20
打赏
举报
回复
这个题目本质上是求元素的组合的全排列,假定每个按键必须按下,也就是必须产生一个字符.例如
2--(a,b,c)
3--(d,e,f)
4--(g,h,i)
那么对于a,d,g这三个字符会有(a,d,g), (a,g,d), (d,a,g),(d,g,a),(g,d,a),(g,a,d)这种可能的字符串.而三个字符的可能组合是可以用枚举求出来的,这里可能的就有
(a,d,g),(a,e,h),(a,f,i),
(b,d,g),(b,e,h),(b,f,i)
(c,d,g),(c,e,h),(c,f,i)
这样子求出所有的字符组合就不难了.
至于二楼的程序,只是列出了三个数字可能产生的组合
wokiss
2007-01-20
打赏
举报
回复
我感觉楼主的意思是,手机上的10个数字(0-9)对应着26个字母,例如数字1对应字母(a,b,c),
然后给出数字窜,比如"321",让程序输出可能的字符窜组合.
不过我也只能想出楼主那样的方法,呵呵.用多个for循环,.
马哲
2007-01-20
打赏
举报
回复
越狱II---之算法版
Silent_Spring
2007-01-20
打赏
举报
回复
USACO上的题吧
iambic
2007-01-19
打赏
举报
回复
>>楼上的好好学学数据结构, 知道什么叫时间复杂度?
遇到你不能理解的东西就沉默点,你还没资格在我面前叫嚣数据结构。仔细看下楼上的意见。
oo
2007-01-19
打赏
举报
回复
一楼的程序看起来不太对,
只有相同数字出现时才有必要算各种可能,如果不同数字则是唯一的。
如果有相同数字出现,则输出的字母个数可能是1-n个的,n为连续数字个数。
例如223,可能是BD也可能是AAD
jiangbin00cn
2007-01-19
打赏
举报
回复
顶
要求太低,算法没有意义
加一个要求:
输入的数字都可以组成一个英文单词,求最优算法
例如
输入
6284
正解 math
珍惜生命远离CPP
2006-12-27
打赏
举报
回复
结果都一样,没什么最优
xwdok
2006-12-27
打赏
举报
回复
楼上的好好学学数据结构, 知道什么叫时间复杂度?
iambic
2006-12-27
打赏
举报
回复
晕——复杂不高……是常数。
xwdok
2006-12-27
打赏
举报
回复
我认为关键是数据结构设计最重要
yisea123
2006-12-27
打赏
举报
回复
最好的算法?
估计这就是最好的算法了
因为本来就有那么多的组合
xwdok
2006-12-27
打赏
举报
回复
楼上的跟我想的有些相似,我也想用数组来存储字母(具体我是用字符串存的)
这样实现上是可以穷举的,但是算法的复杂度很高.
还有没有?
lastwish
2006-12-27
打赏
举报
回复
我想到一个:但估计不是怎么好,各位赐教
每个数字对应几个字母,用一个数组来存,以3个数字为例,
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
for(int k=1;k<=3;k++)
{
string str;
str+=a[i];
str+=b[j];
str+=c[k];
textout(str);
}
蓝桥杯真题(数字三角形详解,洛谷P1236)
在蓝桥杯的赛场上,数字三角形
题目
是
一道
经典而富有
挑战性
的编程题。它不仅考验了选手的数学逻辑,还检验了选手的编程技巧和
算法
优化能力。
题目
描述: 给定一个数字三角形,从顶部出发,在每一节点可以选择移动到...
挑战性
题目
DSCT601:背包问题
UESTC 数据结构
挑战性
课程
题目
大厂
算法
面试真题解析
相信很多朋友们无论是在学校还是已经工作都了解
算法
和数据结构的重要性。无论是实际的工作还是面试,这都是基础的基础,是你不可或缺的一部分。我也相信有大量的
算法
和数据结构的课程可以让你去了解什么是链表,什么是树等等。那我们这门课有什么不一样呢?Chris出品必是精品。因为我们这门课不是一门传统的
算法
和数据结构的课,却是最有用和性价比最高的
算法
课程。我把它叫做面试最后一公里 -
算法
和数据结构这门课使用现在各个大厂的面试真题来讲解,告诉你1.
算法
面试应该怎么思考2.
算法
面试怎么回答才最完美3. 如何高效的准备
算法
面试4. 面试前不可不看的课程还等什么,年薪50万的职位已经在向你招手。
一道
值得思考的
算法
题
这是楼主在做
一道
IMO的数论题中发现的,发现这个问题可以转化为
一道
很有
挑战性
的
算法
题目
,在这里提供给大家。 . 最少的加球次数 m个盒子中开始各放若干个球,每次加球时在其中n (n<m) 个盒子中各加1个球,且...
算法
越学越扎心,有没啥破解之法?
对于
算法
的学习,我也是从一个小白一步步走来,当然,现在仍然很菜,,,不过,鉴于我觉得还有一些人比我更菜了,我决定谈谈我
算法
学习过程走过的坑,以及自己总结的一些经验。 切勿盲目刷题:刷题前的知识积累 说...
C++ 语言
64,683
社区成员
250,491
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章