C++基础练习题(一): 查找最短单词
/*<说明>
编程实现将字符串中最短的单词输出,在主函数中输入字符串,编写一个函数完成最短单词的查找
</说明>*/
#include<time.h>
#include<iostream>
using namespace std; void shortestWord(char* in)
{
int i,j=;
int o[];
for(i=;*(in+i)!=;i++)
{
if(*(in+i)==' ')
{
o[j]=i; //o的作用是定位每一个空格的位置 通过空格位置间隔的大小判断单词的长短
j++;
}
}
j--;
int z=;
int k=o[]; //k是最短单词的个数 初始化为第一个空格的位置 因为后面的操作没有考虑第一个
int l[];
for(;j!=;j--)
{
if(o[j]-o[j-]-<k)
{
z=;
k=o[j]-o[j-]-;
l[]=j-;
}
else if(o[j]-o[j-]-==k)
{
z++; //z统计有多少个最短单词
l[z]=j-;
}
}
if(o[]==k)
{
for(int n=;n<k;n++)
{
printf("%c",*(in+n)); //如果第一个单词就是最短的 打印
}
printf(" ");
}
for(int m=z;m>;m--)
{ for(int n=;n<=k;n++)
{
printf("%c",*(in+o[l[m]]+n)); //打印其他最短单词
}
printf(" ");
}
}
void main()
{
char in[]="Learning a the parameters of neural networks is perhaps one of the most well studied problems within the field of machine learning. Early work on backpropagation algorithms showed that the gradient of the neural net learning objective could be computed efficiently and used within a gradient descent scheme to learn the weights of a network with multiple layers of non-linear hidden units. Unfortunately, this technique doesn’t seem to generalize well to networks that have very many hidden layers (i.e. deep networks). The common experience is that gradient-descent progresses extremely slowly on deep nets, seeming to halt altogether before making significant progress, resulting in poor performance on the training a set (under-fitting)";
int a=clock();
shortestWord(in);
int b=clock();
int c=b-a;
printf("%d",c);
getchar();
}
上面是自己写的代码 效果并不好 测试了一下运行效果2毫秒 太慢 而且没有考虑有连续空格的情况。
/*<书上答案>*/
#include<iostream>
#include<time.h>
using namespace std;
const int Max=;
char *findshort(char s[])
{
static char s1[Max]; //其地址要返回,所以设计为静态变量
char s2[Max];
int i=,j,len1=,len2=;
while(s[i++]!='\0');
s[i-]=' ';
s[i]='\0';
i=;
while(s[i]!='\0')
{
if(s[i]==' '&&s[i+]!='\0'&&s[i+]==' ') //跳过多余空格
{
i++;
continue;
}
if(s[i]!=' ') //提取一个单词到S2中
{
s2[len2++]=s[i];
}
else if(len1==)
{
len1=;
for(j=;j<len2;j++) //将S2复制到S1中
s1[len1++]=s2[j];
s1[len1]='\0';
len2=;
}
else if(len1>len2)
{
len1=;
for(j=;j<len2;j++) //将S2复制到S1中
s1[len1++]=s2[j];
s1[len1]='\0';
len2=;
}
else
{
len2=;
}
i++;
}
return s1;
}
void main()
{
char s[Max]="asddddd gg las sdlgaw va eg aoeng a ge a e gae geoia ae x eox ge x ieg ns e a dfge qdn i am ver";
cout<<"输入单词串:"; int a=clock();
cout<<"最短单词:"<<findshort(s)<<endl;
int b=clock();
int c=b-a;
cout<<c<<endl;
getchar();
}
这是答案中的 只打印了第一个最短单词 但是实现比自己写的代码快很多。
C++基础练习题(一): 查找最短单词的更多相关文章
- [LeetCode] Shortest Word Distance III 最短单词距离之三
This is a follow up of Shortest Word Distance. The only difference is now word1 could be the same as ...
- [leetcode]244. Shortest Word Distance II最短单词距离(允许连环call)
Design a class which receives a list of words in the constructor, and implements a method that takes ...
- noi25 最长最短单词(为什么会出现运行时错误)
noi25 最长最短单词(为什么会出现运行时错误) 一.总结 一句话总结:比如除以零,数组越界,指针越界,使用已经释放的空间,数组开得太大,超出了栈的范围,造成栈溢出 1.c++报runtime er ...
- js基础练习题(1)
1.字符串 视频教程地址: js基础练习题 1.如何连接两个或者两个以上字符串? var cssname = 'box' var num = 1 var html = '<div class=& ...
- Linux基础练习题(二)
Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...
- [LeetCode] Shortest Word Distance II 最短单词距离之二
This is a follow up of Shortest Word Distance. The only difference is now you are given the list of ...
- AC日记——最长最短单词 openjudge 1.7 25
25:最长最短单词 总时间限制: 1000ms 内存限制: 65536kB 描述 输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母.空格和逗号.单词由至少一个连续的字母构成 ...
- [Swift]LeetCode244.最短单词距离 II $ Shortest Word Distance II
This is a follow up of Shortest Word Distance. The only difference is now you are given the list of ...
- [Swift]LeetCode245.最短单词距离 III $ Shortest Word Distance III
This is a follow up of Shortest Word Distance. The only difference is now word1 could be the same as ...
随机推荐
- 【AngularJS】—— 7 模块化
AngularJS有几大特性,比如: 1 MVC 2 模块化 3 指令系统 4 双向数据绑定 那么本篇就来看看AngularJS的模块化. 首先先说一下为什么要实现模块化: 1 增加了模块的可重用性 ...
- sql group by 理解
order by是对字段进行排序,group by 是对字段进行分类,在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用组函数返回每一个组的汇总信息,另外,可以使用ha ...
- github及其他记录
http://mvnrepository.com/artifact/org.jdom/jdom/1.1.3 https://github.com/open-power-workgroup/Hospit ...
- 解决 Mac Pro 用 Excel 打开 CSV 文件不能正常显示的问题
在做系统后台的时候,往往会有导出系统信息(如,用户信息)功能,一般导出为CSV文件. 先前在 Windows 下,导出的CSV文件用 Excel 打开能正常显示,可现在在 Mac 系统中,显示一团乱, ...
- Centos ftp服务器安装配置
yum install vsftpd [root@localhost ftp]# /sbin/service vsftpd restart 查看FTP目录 # more /etc/passwd|gre ...
- Leonbao:MapKit学习笔记
以下仅作了解, 实际使用以百度地图居多, 因为百度地图有动态路径规划等接口 MapKit学习笔记 原帖: http://www.cocoachina.com/bbs/read.php?tid-6 ...
- MRC
MRC 关于NSString,retainCount为-1 C方法中含有Copy的方法名, 都要释放 例如CFRealse(ref) 字符串常量,因为one为字符串常量,系统不会回收,也不会对其作引用 ...
- CSS3-transform,2D动画实例
对元素进行移动.缩放.转动.拉长 或 拉伸 全部都需要加前缀. Transform-2D转换方法:rotate()旋转.scale()缩放.skew()扭曲/倾斜.translate()位移.matr ...
- Java实现读取文件夹下(包括子目录)所有文件的文件名
在编程的过程中,经常会用到对文件的读写操作等.比如,找出某一个文件夹下的所有文件名等. 下面的程序给出了,获取某一给定文件夹下所有文件的绝对路径的程序.可以作为某一个模块,在需要的时候直接使用. pa ...
- 3.6---双栈排序(CC150)
答,课本上的方法比较好. public static Stack<Integer> sort(Stack<Integer> s) { Stack<Integer> ...