微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > 虚拟仪器 > 出个题,大家动动脑子

出个题,大家动动脑子

时间:12-13 整理:3721RD 点击:
有一个含有布尔量的一维数组,怎样判断里面ON的元素是不是连续?全部OFF算是ON元素连续的特例,只有一个ON也可以。要求:一维数组的长度任意,编程实现简便。

想到一个土办法:
找第一个ON的index--->从这个开始找第一个OFF的index-->从上一个找第一个ON的index-->
                                                      ~~~~~~上一步的结果    
返回-1表示找不到,就表示ON是连续的。
当然前两个如果返回-1的话,就处理成0好了

第三步ms有点问题,应该是从那个OFF之后找ON

算法流,简易性无视
p.s:对打不开此文件的表示b4……娃哈哈

 开关数组连续判断.vi

路过,对zt表示bs,嗯

算法比较简单的
p.s:对bs我的人表示bs

 开关数组连续判断2.vi

嗯,是我没表达清楚

能不能先计算On的总数,并记住第一个和最后一个On的index,如果两个index相减与总数相等则应该记为连续

这个绕的有点大呀

说一下我的思路
找变化不为零的点,0个和1个一定是连续的,>2个一定是不连续的
=2个要看初始值,初始值为false的才是连续的

那就把数组分为两个,一个从0到i-1,一个从1-i,然后对这两个数组求异或,统计不为0的结果
,一旦发现大于两个就认为不连续.这样会不会快点啊,呵呵.

测试结果明显不对啊……

这个算法为啥行,不懂

理解错了……

fineabc, good job. Could you please add some brief explanation. Something natural for you would be obstacle for others. In addition, you may forget your own idea after, say, six months. That's why documentation is as important as the code itself.
Attached is my code done a couple of weeks ago, maybe not as efficient as yours. I am not an expert of algorithm 8-).
Thanks,

 BDS_channel_settings_ChaContinuous.vi

好吧……
前面的那一个算法比较fz,思路如下:把开关数组转化为十进制数字,如果是奇数说明第一位是1,如果是偶数则第一位是0。是偶数的话就除二一直除成奇数。之后判断这个数字是不是等于2^n-1,如果是的话就是连续的。方法是+1取log,判断是不是整数。
后面一个相对实用一点,形象一点说就是把这一串开关转化为01数组,然后判断上升沿个数,如果有两个上升沿那么必然不连续啦。
p.s:有的时候conditional停止的For loop还是很有用地~~
p.ss:b4不用8.5的人……
over

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top