| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 688 人关注过本帖
标题:一个算法问题
只看楼主 加入收藏
xujundong
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-8-1
收藏
 问题点数:0 回复次数:10 
一个算法问题
想请教一个算法问题:
比较字符串:在一个字符串数组中选出一个,比给定字符串小,但却是小的当中最大的一个字符串。如:abc,123,bdi,dxa,ijf;给定cba,那么符合条件的是:bdi
c,c++实现都可以,我写了一个需要双重循环实现的程序,但我认为单循环就可以实现了,所以想请教一下!为了提高效率急等着解决
搜索更多相关主题的帖子: 算法 
2006-08-03 12:19
frenn
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-8-2
收藏
得分:0 

char str[10][10]={.....};
char str1="...";
chat *temp;
temp="";
for(int i=0;i<10;i++){
if(strcmp(str[i],str1)==-1 && strcmp(str[i],temp)==1)
temp=str[i];
}
printf("%s\n",temp);

2006-08-03 12:47
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
能否将你的程序贴上来。

这样比较,
设定一个指针,保存当前比给定串小但比前面的串的最大者。起始初值可以为NULL.
从第一个字符串开始比较,如果比给定串小,且比当前的Max要大,则将该串保存在Max中。如此比较,直到最后一个字符串。
最后输出Max就是所求。


倚天照海花无数,流水高山心自知。
2006-08-03 13:25
池中月
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-4-10
收藏
得分:0 

可以先对数组排序,得到中间值啊.


2006-08-03 14:39
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
楼上的你用什么排序?

倚天照海花无数,流水高山心自知。
2006-08-03 14:45
xujundong
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-8-1
收藏
得分:0 
这个是单片机编程,所以根本就没有内存空间让你先去排序数组啊所以由于效率这一点,让人有点烦 啊!
2006-08-03 15:13
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

一重循环是可以实现,
我没做过单片机,不了解,下面这个程序您看看,看满足要求不?
#include "stdio.h"
#include "conio.h"
#include "string.h"
int main()
{
char str[5][20]={"abc","123","bdi","dxa","ijf"},source[20]="cba";
char (*p)[20]=&str[0];
int counter=0;
int flag=1;
char obtstr[20];
for(;counter<5;counter++,p++)
{
if(!flag&&strcmp(source,*p)>0)
{
if(strcmp(obtstr,*p)<0)
{
strcpy(obtstr,*p);
}
}
if(flag&&strcmp(source,*p)>0)
{
strcpy(obtstr,*p);
flag=0;
}

}
printf("the string is \"%s\"",obtstr);
getch();
}


对不礼貌的女生收钱......
2006-08-03 18:29
frenn
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-8-2
收藏
得分:0 
其实3楼所说的我在2楼就已经实现了阿,还能更简单吗?
楼上的时间开销和空间开销都比2楼的要大阿。
2006-08-04 16:39
编程小菜鸟
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-2-10
收藏
得分:0 
把给定字符串和每个字符串比较找出小的,存起来和下一次找出来的比较找出大的!!!
2006-08-04 18:19
编程小菜鸟
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-2-10
收藏
得分:0 
用一个循环,两个比较,一个赋值就能实现!!!
2006-08-04 18:21
快速回复:一个算法问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012227 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved