题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1523

此题大意为 给你一串摩尔斯密码  再给你一个字典(下面单词本)

用下面的单词组合成给你的摩尔斯密码, 问最多有多少种不同的组合方式。

题解分析:

1.设字符串的长度为len ,  判断dp[i]处是否可达, 若可达则遍历整个单词表。

2.要先把dp[0]设为1,遍历单词表,若此单词可以在 i 处匹配则 dp[i+L] += dp[i], L(这个单词转成摩尔斯密码后的字符长度);

3.最后输出dp[len];

下面是代码:

 #include<stdio.h>
#include<string.h> char Morse[][]={{".-"},{"-..."},{"-.-."},{"-.."},
{"."},{"..-."},{"--."},{"...."},{".."},{".---"},{"-.-"},{".-.."},
{"--"},{"-."},{"---"},{".--."},{"--.-"},{".-."},{"..."},{"-"},
{"..-"},{"...-"},{".--"},{"-..-"},{"-.--"},{"--.."}}; char Dict[][];//字典保存每个单词
int dp[];
int main()
{
int T, i, n, len, j, a;
char str[], str2[];
scanf("%d",&T);
while(T--)
{
scanf("%s",str);
len = strlen(str);
scanf("%d",&n);
memset(dp,,sizeof(dp));
for(i=; i<n; i++)//转化词典
{
Dict[i][]=NULL;//每次到要初始化 scanf("%s",str2);
for(j=; str2[j]; j++)
strcat(Dict[i],Morse[str2[j]-'A']);
}
dp[] = ;
for(i=; i<len; i++)
{
if(dp[i])
{
for(j=; j<n; j++)
{
a = strlen(Dict[j]); if(strncmp(str+i,Dict[j],a) == )//若此处可以匹配
dp[i+a] += dp[i];
}
}
}
printf("%d\n",dp[len]);
}
return ;
}

最新文章

  1. Python:利用内建函数将字符串转化为整数
  2. 预定义接口-迭代器Iterator
  3. iOS-多线程-内存管理
  4. [ERROR] Plugin &#39;InnoDB&#39; init function returned error
  5. js:数据结构笔记3--栈
  6. SSH2中memcached作为hibernate二级缓存
  7. Actioncontext跟ServletActionContext的区别---未完待续
  8. live555学习之RTSP连接建立以及请求消息处理过程
  9. php调用com组件配置 以openoffice为例
  10. Meld Diff for windows 安装和配置
  11. QT环境的搭建
  12. 洛谷 [P2774] 方格取数问题
  13. es6学习笔记--promise对象
  14. 深入理解.NET Core的基元: deps.json, runtimeconfig.json, dll文件
  15. Hexo博客主题优化
  16. 【BZOJ1878】【SDOI2009】 HH的项链
  17. Linux&#160;nohup命令应用简介--让Linux的进程不受终端影响
  18. C语言初学
  19. Python fabs() 函数
  20. PHPCMS v9在后台文章管理列表添加类别

热门文章

  1. 利用DIV,实现简单的网页布局
  2. js的MVC结构设计
  3. Java-Android 之电话拨号源码
  4. Initializer block.
  5. Encapsulation.
  6. NetAdvantage webdatagrid 控件的一些属性
  7. Xcode7插件开发:从开发到拉到恶魔岛
  8. Xcode添加静态库以及编译选项配置常见问题
  9. 层模型--固定定位(position:fixed)
  10. codeforces 165D.Beard Graph 解题报告