算法导论里问题解答
来源:互联网 发布:sql server分布式 编辑:程序博客网 时间:2024/06/08 16:10
思路: 两个二进制数相加 如: 101 +11 = 1000
private static final int[] a = { 1, 0, 1 };
private static final int[] b = { 1, 1 };
答案应该是:1000
分析:如果按照正常的加法,我们得从数组的末尾开始计算,但是这样会使数组的索引处理出现问题,稍微有些复杂,所以我想把数组先倒叙,再把数组相加,相加后再倒叙回来,这样问题会简单许多。
下面仅仅提供一个思路:
<pre name="code" class="java">private static int[] Add(int[] a2, int[] b2) {int minLen = 0;int maxLen = 0;int[] maxArr = null;int[] minArr = null;if (a2.length > b2.length) {minLen = b2.length;maxLen = a2.length;maxArr = a2;minArr = b2;} else {maxLen = b2.length;minLen = a2.length;maxArr = b2;minArr = a2;}int[] newArr = new int[maxLen + 1];/** * 先把数组倒叙 */maxArr = revArr(maxArr);printArr(maxArr);minArr = revArr(minArr);printArr(minArr);// 是否有进制boolean isCanUp = false;for (int i = 0; i < maxLen + 1; i++) {if (i < minLen) {if (isCanUp) {if (maxArr[i] + minArr[i] + 1 >= 2) {newArr[i] = (maxArr[i] + minArr[i] + 1) % 2;isCanUp = true;} else {newArr[i] = maxArr[i] + minArr[i];isCanUp = false;}} else {if (maxArr[i] + minArr[i] >= 2) {newArr[i] = (maxArr[i] + minArr[i]) % 2;isCanUp = true;} else {newArr[i] = maxArr[i] + minArr[i];isCanUp = false;}}} else if (i < maxLen) {if (isCanUp) {if (maxArr[i] + 1 >= 2) {newArr[i] = (maxArr[i] + 1) % 2;isCanUp = true;} else {newArr[i] = maxArr[i] + 1;isCanUp = false;}} else {newArr[i] = maxArr[i];isCanUp = false;}} else {if (isCanUp) {newArr[i] = 1;} else {newArr[i] = 0;}}}printArr(newArr);int[] arr = revArr(newArr);printArr(arr);return arr;}
数据算法对于这种简单的算法技巧性要求比较高,正这来不行,就反过来。
0 0
- 算法导论里问题解答
- 算法导论里的NP完全问题
- 实现《算法导论》里的快排
- 算法导论里关于随机算法的两道题
- 算法擂台微积分习题问题解答
- 机器学习的算法和普通《算法导论》里的算法有什么本质上的异同
- 《算法导论》
- 《算法导论》
- 算法导论
- 算法导论
- 算法导论
- 算法导论
- 算法导论
- 算法导论
- 算法导论
- 《算法导论》
- 《算法导论》
- 算法导论
- Barcode Professional for ASP.NET使用教程:如何在HTML支持的DPI范围内显示高清条码
- MySQL MetaData中PRI_KEY,PART_KEY,MULTIPLE_KEY,UNIQUE_KEY的内涵
- C语言单链表实现19个功能完全详解
- tomcat配置https双向认证
- Ubuntu Linux下安装Oracle JDK
- 算法导论里问题解答
- nginx 配置为play!的前端http服务器
- 第11周 项目1-中序线索化二叉树的算法验证
- kuangbin大牛的模板
- 【WebRTC】NAT机制和传输机制
- 使用Cocos2d-lua开发植物大战僵尸06-僵尸类的实现
- java面向对象之接口与多态
- hdu 2159 FATE (二维完全背包)
- 第九周实践项目2—对称矩阵压缩存储的实现与应用(1)