求解:给定一个数组a[N],我们希望构造数组b[N],其中b[i]=a[0]*a[1]*...*a[N-1]/a[i].

求解:给定一个数组a[N],我们希望构造数组b[N],其中b[i]=a[0]*a[1]*...*a[N-1]/a[i]. 下面是完整题目
给定一个数组a[N],我们希望构造数组b[N],其中b[i]=a[0]*a[1]*...*a[N-1]/a[i].在构造过程:
不允许使用除法;
要求O(1)空间复杂度和O(n)时间复杂度;
除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、对空间和全局静态变量等);
请用程序实现并简单描述.
穆天子 1年前 已收到3个回答 举报

gz_park 幼苗

共回答了23个问题采纳率:95.7% 举报

int main(){
x09const int n = 8;
x09int a[n] = {1,2,3,4,5,6,7,8};
x09int b[n];
x09b[n-1] = 1;
x09for (int i=n-2;i>=0;i--)
x09x09b[i] = b[i+1]*a[i+1];
x09
x09int c = 1;
x09for(int i=1;i

1年前 追问

6

穆天子 举报

可是,要求说了不能使用中间变量啊,“int c=1”不符合要求啊

举报 gz_park

int main(){ const int n = 8; int a[n] = {1,2,3,4,5,6,7,8}; int b[n]; b[n-1] = 1; for (int i=n-2;i>=0;i--) b[i] = b[i+1]*a[i+1]; for(int i=1;i

穆天子 举报

运行结果: 40320 20160 13440 10080 8064 6720 5760 5040

joyce311 幼苗

共回答了1个问题 举报

void array()

{

const int N = 8;

int a[N] = {1, 2, 3, 4, 5, 6, 7, 8};

int b[N] = {1, 1, 1, 1, 1, 1, 1, 1};

for (int i = 0; i < N; i++)

{

for (int j = 0; j < N; j++)

if (i == 0)

b[i] *= a[j];

else if (i < j || i > j)

b[i] *= a[j];

}

cout << endl;

for (int t = 0; t < N; t++)

cout << "b[" << t << "] = " <

1年前

2

浩月当空121 幼苗

共回答了13个问题采纳率:84.6% 举报

今天的笔试题。。。

1年前

0
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 19 q. 0.417 s. - webmaster@yulucn.com