嘿嘿,不敢不敢
首先说我可不是来吵架的,走错了地方不来就是了。
一些问题可不能马上就有答案
比如说01识别问题,往复杂了说就是OCR的算法,挺困难的,工作量也大,往简单了说,如果只是数字的识别,其实也挺复杂,因为基本过程不能省,我刚才写了以下数字0,1,2,3,4,5,6,7,8,9;借鉴ocr的特征比对 可以建立“边角特征”我建议建立“米”字特征,先瘦边,再按一定比例省掉一些笔画,比如“2”下面一横太小了就考虑辨认为“7”,当然,决定多“小”才是“小”的“一定比例”可由矩阵大小和比例决定,(然后要旋转就有些麻烦了比如把5字倒过来写什么的),比较特征,如果我做就把特征库做得大大(数量多)的,算法自然就可以简单了,至于程序嘛,编出来太费功夫,我不至于为了想在这发言就费这么大功夫,嘿嘿,实话,写完这个又会出现那个,你说对不对?
好多人看过Thomas H.Cormen的《算法导论》,我大多数题都有答案,里面很多示例我总是当字典和样板用,没求甚解,惭愧,所以就不抄上来了充当自己做的了,如果大家有全套答案一定要共享呀。
我怎么觉得跟“孔明过江”似的,先来三个问题,吓人,我又不联合你家主公抗曹,费那么大劲干啥?
“交流融通”,我受惠于论坛的一些版块,就想回报一下,别的技术我没啥发言权,就这门还比较熟,要是不欢迎就算了,做个结尾吧。那就是:
上面的例子并没有现指针,我的意思是先要弄清“地址”的概念再谈指针,所以先说这个例子,估计以后发言越来越难,“风声紧,下回又要挨砖”,所以提纲携领的说说得了,省得大意都不完全,例子免了呀!
接下来说说指针,指针大家都说复杂其实指针可以使程序更简单,它可以用来灵巧地处理“复杂数据(成块的数据)”和技巧地使用函数。他的要点就是“抽象”处理复杂数据体现在处理数组上(特别是自定义类型的数组),技巧的使用函数指的是利用函数的指针可以大大的简化编程。
1:指针和普通变量
定义书上都有,但所有的示例只是用来说明指针语法,注意,不是用法。对单个变量来说指针仅用于从函数中带回来一个以上的值,即类似于后来的“引用传递”
2:指针与数组体现了指针处理数据的能力,大部分人都觉得指针与2维数组,指针的指针等等内容比较烦,其实只要掌握一点,嘿嘿,那就是[],对方括号不是“神圣的不可侵犯的类似保留字的东西”,他是运算符呀,他的等效运算是“ *()”,那么对于一维数组来说 a[i]既是*(a+i)既是
“*(i+a)” 就是i[a],不信试试;没错的,oreilly公司的哪本书上就有例子。
那么对于2维数组a[M][N]来说,就好理解多了 a[i][j]既是 "*(a[i]+j)",a[i]当然就不是个“所谓数值了”,它是个地址,或者说指针,那a已经是数组了,那它就是个指针数组,它包括M个指针,
即M个a[i],而a[i]这种指针不是“标准类型”如整形之类的(体现在+-运算的“跨度”上),他是“自定义类型数据”,他的“容量”是N*sizeof(TYPE),(简单说了,想结束本帖,就不画图了)。
如果结合这些想法看看书,是否有助于理解?
3、函数的指针,这可是不能不学的地方,如果想从业这部分内容必学,并且体现“修养”哟。
他体现了指针的另一个能力“抽象”,当然,回调函数,包括C#里的委托,Java里动态代理都是直接使用函数指针的例子,但我要说的就是可以利用“抽象”达到简化编程的目的,这也是广泛运用的。
比如,发帖框旁边的“兔斯基”,怎么动得都有,一页16个,逐个用算法去画太复杂,可以规范一个接口,利用函数的指针 int (draw *)(arg...);然后定义一个结构体数组比如ra_s[M],除了把兔子的坐标之类放进去以外,还有个成员就是这个函数指针,然后你尽可以发明各种画兔子的方法,但有一条,必须符合 int (draw *)(arg...);的标准,然后对ra_s[M]中的函数指针成员赋值(即指向各种画法),
然后遍历ra_s[M],访问函数指针就可以得到各种形态的兔子了。
好,1,2,3都讲完了,本想详细道来,现在匆匆一讲,大家都是很高水平,不用我赘述了,写完只是为了有个交代,别说俺没写。
另外楼上忘了说弄个三维空间干嘛了,本来不想说,但实在忍不住,取坐标中的值?O(1),画轨迹?嘿嘿,算了
886,继续潜水!