c++华为机试 搬书游戏 如何最轻松的完成固安哪些村要合并搬走任务

做华为OJ的一道题目,碰到问题花了很长时间,终于解决了非常开心记录一下。我的程序如下,在本地执行正确的,但传上去就会判断时间超限,解决后面会说:unsigned int Continumax(char** pOutputstr,
char* intputstr)
int lengthtemp=0,length=0,flag=0,i=0;
char * tempstr,*
*pOutputstr=(char*)malloc(100*sizeof(char));
longeststr =
if((*intputstr=='\0')||(intputstr==NULL)){
**pOutputstr='\0';
if((*intputstr&='0') && (*intputstr&='9')){
if(flag==0){
lengthtemp++;
if(lengthtemp&=length){
longeststr=
lengthtemp=0;
if(*intputstr=='\0')
intputstr++;
}while(1);
for(i=0;i&i++){
*(*pOutputstr+i)=*(longeststr+i);
*(*pOutputstr+i)='\0';
另一个正确的解法如下:unsigned int Continumax(char** pOutputstr,
char* intputstr)
int lengthtemp=0,length=0,flag=0,i=0;
char * tempstr,*
*pOutputstr=(char*)malloc(100*sizeof(char));
longeststr =
if((*intputstr=='\0')||(intputstr==NULL)){
**pOutputstr='\0';
while(*intputstr!='\0'){
if((*intputstr&='0') && (*intputstr&='9')){
lengthtemp++;
intputstr++;
while((*intputstr&='0') && (*intputstr&='9')){
lengthtemp++;
intputstr++;
if(lengthtemp&=length){
longeststr=
lengthtemp=0;
if(*intputstr=='\0')
intputstr++;
for(i=0;i&i++){
*(*pOutputstr+i)=*(longeststr+i);
*(*pOutputstr+i)='\0';
}程序在自己机子上跑的时候,测了好多测试用例都是没问题的,传上去就说时间超限。但是怎么看都不可能是因为程序本身时间跑的太长的问题,系统给的是10秒钟,这么点程序根本不可能跑到这个时间,网上查了一大堆资料,基本都说是会有死循环,或者是算法太复杂,这些可能性都逐一排除了,花了我一天多的时间,后来用第二种方法上传正确了以后,更纳闷了,一直想不通第一种方法有什么问题,两种的解决思想其实没有什么大的差别,实现也没什么不同。费了九牛二虎之力,最后发现是因为第一种方法会出现字符串指针tempstr在没有经过初始化的时候就赋给longeststr的情况,可能tempstr本身有特殊的值,这样就会被系统拒绝执行,因此出现问题,只需要在一开始对两个变量进行初始化char * tempstr=NULL,* longeststr=NULL;后一种方法虽然同样没有初始化,但是很巧妙的躲过了这个陷阱,因为只有在tempstr被赋值了的情况下,才会把tempstr赋值longeststr,总算发现了二者的区别。这次的经历实在是坎坷,两段代码比对了几十遍,始终觉得没有什么差别, 万万没想到是初始化的问题,看来还是需要养成良好的习惯,引以为戒。
以上就介绍了华为OJ在字符串中找出连续最大的数字串,本机运行正确,系统判断时间超限的错误解决,包括了方面的内容,希望对C/C++教程有兴趣的朋友有所帮助。
本文网址链接:/article/detail_112028.html
上一篇: 下一篇:华为上机题汇总111题_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
华为上机题汇总111题
上传于||文档简介
&&华​为​历​年​上​机​题​汇​总​,​c​+​+​写​的​。
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩143页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 报 合并完成 公告 的文章

 

随机推荐