求解:给定一个数组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]外,不可使用新的变量(包括栈临时变量、对空间和全局静态变量等);
请用程序实现并简单描述。
展开
bitcoper
2012-07-22
知道答主
回答量:5
采纳率:0%
帮助的人:7633
展开全部

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;


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e29fac5
2012-04-09 · TA获得超过1315个赞
知道小有建树答主
回答量:790
采纳率:50%
帮助的人:594万
展开全部
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;

}
更多追问追答
追问
可是,要求说了不能使用中间变量啊,“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
展开全部
今天的笔试题。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式