求解:给定一个数组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(...
给定一个数组a[N],我们希望构造数组b[N],其中b[i]=a[0]*a[1]*...*a[N-1]/a[i]。在构造过程:
不允许使用除法;
要求O(1)空间复杂度和O(n)时间复杂度;
除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、对空间和全局静态变量等);
请用程序实现并简单描述。 展开
不允许使用除法;
要求O(1)空间复杂度和O(n)时间复杂度;
除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、对空间和全局静态变量等);
请用程序实现并简单描述。 展开
展开全部
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 << "] = " <<b[t] << endl;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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];
int c = 1;
for(int i=1;i<n;i++)
{
c*=a[i-1];
b[i] *= c;
}
for (int i=0;i<n;i++)
cout << b[i] << endl;
}
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];
int c = 1;
for(int i=1;i<n;i++)
{
c*=a[i-1];
b[i] *= c;
}
for (int i=0;i<n;i++)
cout << b[i] << endl;
}
更多追问追答
追问
可是,要求说了不能使用中间变量啊,“int c=1”不符合要求啊
追答
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<n-1;i++)
{
b[n-1]*=a[i-1];
b[i] *= b[n-1];
}
b[n-1]*=a[n-2];
for (int i=0;i<n;i++)
cout << b[i] << endl;
}
这字眼扣的真没意义。这下没有中间变量了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-04-07
展开全部
今天的笔试题。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询