搜狗笔试题
来源:互联网 发布:java 压缩成tar.gz 编辑:程序博客网 时间:2024/04/28 04:10
一个长度为n的数组a[0],a[1],...,a[n-1]。现在更新数组的名个元素,即a[0]变为a[1]到a[n-1]的积
a[1]变为a[0]和a[2]到a[n-1]的积,...,a[n-1]为a[0]到a[n-2]的积。
程序要求:
要求具有线性复杂度。
不能使用除法运算符。
算法思想:
设共有N个数(N=7), 建立一个数组backToFront,从数组最后开始分别保存a[6], a[6]*a[5], a[6]*a[5]*a[4],.......a[6]*a[5]*a[4]*a[3]*a[2]*a[1].
然后再设一个变量 frontToBack用来保存,从前到后的乘积.
#include <iostream>using namespace std;void print(long a[], int len){ int i; for (i = 0; i < len; i++) cout << a[i] << " "; cout << endl;}void change(long a[], int len){ long *backToFront = new long(len); long frontToBack; int i; backToFront[len - 1] = 1; for(i = len - 2; i >= 0; i--) backToFront[i] = backToFront[i + 1] * a[i + 1]; frontToBack = 1; for(i = 0; i < len; i++) { int tmp; tmp = a[i]; a[i] = frontToBack * backToFront[i]; frontToBack *= tmp; } delete [] backToFront; }int main(){ long a[MAX]; int i; for (i = 0; i < MAX; i++) a[i] = i + 1; print(a, MAX); change(a, MAX); print(a, MAX); system("PAUSE"); return 0;}
- 搜狗笔试题
- 搜狗笔试题
- 搜狗笔试题
- 搜狗笔试题
- 搜狗笔试题
- 搜狗笔试题
- 搜狗笔试题
- 搜狗笔试题
- 搜狗的笔试题
- 搜狗笔试题1
- 搜狗笔试题2
- 搜狗笔试题3
- 搜狗笔试编程题
- 搜狗笔试题201709082127
- 京东笔试&搜狗笔试-总结
- 搜狗笔试算法设计题参考答案
- 搜狗的一道笔试题
- 网上的一道搜狗笔试题
- Windows Phone 7开发资料收集
- 为什么国外企业不用OA
- RMAN Catalog 和 Nocatalog 的区别
- c# 控件,线程间操作(设置主窗体控件数据)
- Oracle Rman 命令详解(List report backup configure)
- 搜狗笔试题
- 20110930<。)#)))≦
- Oracle Stream Replication技术
- 正则表达式
- WinDbg为什么插入断点后也不变红并且也不停下来?
- 寻找兄弟字符串
- selenium作为自动化框架的优越性
- wxd719() :大大您的方法有一点小问题:我设成每页35行,在分组区用GROUPNUMBER MOD 1 =0强制分组从新页开始,加上你的recordNumber mod
- 在Redhat AS6上搭建Hadoop集群总结