zoukankan      html  css  js  c++  java
  • 精妙算法收集一道有趣的腾讯笔试加分题

    【转】白话算法经典系列之十四

    问题描述:现有一数组a[N-1],求另外一数组b[N-1]

    问题约束:1.不能用除法 2.不能用除了遍历a,b两数组需要的变量之外的变量 3.时间复杂度为O(N),空间复杂度为O(1)

    解法:

    // 腾讯2012年实习生笔试加分题
    //http://blog.csdn.net/morewindows/article/details/8742666
    //By MoreWindows( http://blog.csdn.net/MoreWindows )
    #include <stdio.h>
    void PrintfArray(int a[], int n)  
    {  
    	for (int i = 0; i < n; i++)  
    		   printf("%5d ", a[i]);  
    	putchar('\n');  
    } 
    int main()
    {
    	printf("    腾讯2012年实习生笔试加分题  \n");
    	printf(" - http://blog.csdn.net/morewindows/article/details/8742666 -\n");
    	printf(" -- By MoreWindows( http://blog.csdn.net/MoreWindows ) --\n\n"); 
    	
    	const int MAXN = 5;
    	int a[MAXN] = {1, 3, 5, 7, 9};
    	int b[MAXN];
    	
    	printf("数组a为:\n");
    	PrintfArray(a, MAXN);
    
    	b[0] = 1;
    	int i;
    	for (i = 1; i < MAXN; i++)
    		b[i] = b[i - 1] * a[i - 1];
    	int b[0] = 1;
    	for (i = MAXN - 2; i >= 1; i--)
    	{
    		b[0]*= a[i + 1];
    		b[i] *= b[0];
    	}
    
    	printf("数组b为:\n");
    	PrintfArray(b, MAXN);
    	return 0;
    }
    

      

  • 相关阅读:
    数组迭代方法
    promise
    Gulp执行预处理
    第一个gulp 项目
    vue 单元素过渡
    webpack 入门
    webpack初始化
    v-for 指令
    ajax 工作原理
    面试小问题
  • 原文地址:https://www.cnblogs.com/obama/p/3017028.html
Copyright © 2011-2022 走看看