打印

再问个算法,多谢!一个实际问题。

[复制链接]
1712|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xlsbz|  楼主 | 2012-4-6 15:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
xlsbz|  楼主 | 2012-4-6 15:23 | 只看该作者
想出来了  前x个数的和   除以 x 是否等于 首个数

使用特权

评论回复
板凳
lxyppc| | 2012-4-6 15:26 | 只看该作者
想出来了  前x个数的和   除以 x 是否等于 首个数
xlsbz 发表于 2012-4-6 15:23


(2+1+3)/3 = 2

使用特权

评论回复
地板
joyme| | 2012-4-6 15:42 | 只看该作者
没有什么技巧的,
t = 0;
for(i=0;i<x-1;i++)
{
     if(tmp[i+1] != tmp[i])
     {
             t = 1;
             break;
     }           
}

使用特权

评论回复
5
xlsbz|  楼主 | 2012-4-6 16:38 | 只看该作者
本帖最后由 xlsbz 于 2012-4-6 16:39 编辑

3# lxyppc OOOOO

使用特权

评论回复
6
xlsbz|  楼主 | 2012-4-6 16:43 | 只看该作者
用switch case得了!!!晕!!代码长点  不出错

使用特权

评论回复
7
lxyppc| | 2012-4-6 17:01 | 只看该作者
while(x && !t)  t = tmp[--x] != tmp[0];

使用特权

评论回复
8
icecut| | 2012-4-6 18:17 | 只看该作者
按照楼主的想法,应该求方差....方差为0则相等

使用特权

评论回复
9
liang7143| | 2012-4-6 18:37 | 只看该作者
求 方差
还不如4L 来得直接

使用特权

评论回复
10
西门看雪| | 2012-4-6 21:16 | 只看该作者
没有什么技巧的,
t = 0;
for(i=0;i
joyme 发表于 2012-4-6 15:42


还有一种方法:将前N个字节 循环左移 或者 循环右移一个字节;然后比较移动前后的数据是否一致

使用特权

评论回复
11
sljzyjj| | 2012-4-7 09:01 | 只看该作者
还是四楼的直观,不知汇编后的代码效率高不高。

使用特权

评论回复
12
joyme| | 2012-4-7 09:45 | 只看该作者
效率不是最高的,for循环可以用do...while会更好点,代码的可读性也是很重要的,具体要权衡应用环境,个人不喜欢在一些对效率要求不高的程序去绞尽脑汁省几个指令周期,或用如7楼那种形式写的程序(貌似考试呀、面试什么的比较喜欢用这种出题),纯属个人意见,呵呵

使用特权

评论回复
13
Cortex-M0| | 2012-4-7 15:09 | 只看该作者
这样效率是否更高点?

t = 0;
for(i=0;i<x-1;)
{
     if(tmp[0] ^ tmp[++i])
     {
             t = 1;
             break;
     }           
}

使用特权

评论回复
14
Cortex-M0| | 2012-4-7 15:12 | 只看该作者
改用 do...while 循环

t = 0;
i = 0;
do{
     if (tmp[0] ^ tmp[++i])
     {
             t = 1;
             break;
     }           
}while(i<x-1);

使用特权

评论回复
15
chenbb8| | 2012-4-7 17:41 | 只看该作者
tmp[0] ^ tmp[++i]这样的写法貌似是比较好点,只需要从flash中读取一次 tmp[0]的值就OK了
使用^还是用== LZ测试下看下那个好

使用特权

评论回复
16
xlsbz|  楼主 | 2012-4-7 20:40 | 只看该作者
多谢楼上各位。

我觉得如何C学得灵活  学得精 脑子灵活 ,那就用^。

而我个人写程序一般用比较简单的语句, 所以我用4楼的做法。
if 0 == x {
}
else if 1 == x {
}
else if (2 《= x ) &&(x《= ) {
t = 0;
for(i=0;i<x-1;i++)
{
     if(tmp[i+1] != tmp[i])
     {
             t = 1;
             break;
     }           
}

}


多谢楼上各位大拿。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

190

主题

1614

帖子

4

粉丝