博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于visual Studio2013解决面试题之0403串联字符串
阅读量:5149 次
发布时间:2019-06-13

本文共 1427 字,大约阅读时间需要 4 分钟。



题目

解决代码及点评

 
 
 
 
/*	有 n个长为 m+1的字符串,如果某个字符串的最后m个字符与某个字符串的前m个字符匹配,则两个字符串可以联接,	问这n个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误。 */#include 
using namespace std;int maxlengh = 0;void go(char *a[20], char **a2, int n){ // 遍历13个字符串 for (int i = 0; i < 13; i++) { int flag = 0; // 判断a[i]是不是在a2里,如果是flag = 1 for (int j = 0; j < n; j++) { if (a[i] == a2[j]) { flag = 1; } } if (flag == 1) // 如果是在a2里,那么就看下一个字符串 { continue; } if (n == 0) // n == 0 表示a2里还没有字符串 { a2[n] = a[i]; // 既然没有,就直接将a[i]保存吧 n++; // 保存完a2里就多了一个元素,要记录 if (n > maxlengh) // 如果n>maxlengh,那么重新记录max { maxlengh = n; } go(a, a2, n); // 递归调用本函数 n--; } // 如果n不是0,那么判断a[i]是不是符合条件 else if (a2[n - 1][1] == a[i][0] && a2[n - 1][2] == a[i][1] && a2[n - 1][3] == a[i][2]) { a2[n] = a[i]; // 如果符合条件,就把它记录到a2 n++; // 一样的重新记录maxlength if (n > maxlengh) { maxlengh = n; } // 递归继续 go(a, a2, n); n--; } }}/* 测试主函数 */int main(){ char *a[20] = { "abcd", "bcde", "cdea", "deab", "eaba", "abab", "deac", "cdei", "bcdf", "cdfi", "dfic", "cdfk", "bcdg" }; char *a2[20]; go(a, a2, 0); cout << maxlengh; system("pause"); return 0;}

代码下载及其运行

代码下载地址:http://download.csdn.net/detail/yincheng01/6704519

解压密码:c.itcast.cn

下载代码并解压后,用VC2013打开interview.sln,并设置对应的启动项目后,点击运行即可,具体步骤如下:

1)设置启动项目:右键点击解决方案,在弹出菜单中选择“设置启动项目”

2)在下拉框中选择相应项目,项目名和博客编号一致

3)点击“本地Windows调试器”运行

程序运行结果






转载于:https://www.cnblogs.com/niulanshan/p/6175157.html

你可能感兴趣的文章
让HttpClient不要打印巨多的日志
查看>>
场和帧的 关系(转)
查看>>
verilog 有符号数(2转)
查看>>
JS命名空间、对象封装
查看>>
自定义HttpFilter模块完善
查看>>
编码上的小改进
查看>>
Conda常见命令
查看>>
【动态规划】Codeforces 706C Hard problem
查看>>
1.4.1 Arithmetic Progressions
查看>>
React Native安装步骤
查看>>
数据转换服务-文本抽出技术
查看>>
GPS导航仪常见术语解释
查看>>
实验七
查看>>
HDU-2028
查看>>
Tomcat支持多少并发
查看>>
远程桌面工具有哪些?
查看>>
Ubuntu12.04 耳机无声 扬声器有声的解决
查看>>
关联查询中的一对一查询。通过第一种方式也就是自动映射的方式查询所有订单信息,关联查询下单用户信息。(由于需要创建中间类,这种方法在实际开发中已经不再使用)...
查看>>
【编程思想】【设计模式】【行为模式Behavioral】备忘录模式Memento
查看>>
Android深度探索第九章
查看>>