无题

来源:互联网 发布:图论算法教材 编辑:程序博客网 时间:2024/05/17 20:29

给定一数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在构造过程中,不允许使用除法:要求O(1)空间复杂度和O(n)的时间复杂度;除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、堆空间和全局静态变量等);


#include <iostream>#include <string>#include <time.h>#include<algorithm>using namespace std;const int MAXN = 5;int a[MAXN] = {1, 3, 5, 7, 9};int b[MAXN];void print(int a[], int n){int i;for(i = 0; i < n; i++)cout << a[i] << ' ';cout << endl;}void fn(){int i;b[0] = 1;for(i = 1; i < MAXN; i++)b[i] = b[i - 1] * a[i - 1];b[0] = 1;for(i = MAXN - 1; i > 0; i--){b[i] *= b[0];b[0] *= a[i];}print(b, MAXN);}int main(){fn();cin.get();return 0;}


参考 http://blog.csdn.net/morewindows/article/details/8742666

0 0
原创粉丝点击