摘要:
给定一个数组a[N],我们希望构造数组b[N],其中b[i]=a[0]*a[1]*...*a[N-1]/a[i]。在构造过程:不允许使用除法;要求O(1)空间复杂度和O(n)时间复杂度;除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、对空间和全局静态变量等);请用程序实现并简单描述。虽然前不久做了一次,但手写还是错,临界问题未考虑清楚。。。。闷~现在查错不使用调试。。。下次要学会证明算法的正确性。 1 void func3(int a[], int b[], int n) 2 { 3 b[n-1] = 1; 4 5 for (int i=n-1; i>0... 阅读全文
摘要:
11、求一个全排列函数:如p([1,2,3])输出: [123],[132],[213],[231],[321],[312].2、求一个组合函数如p([1,2,3])输出: [1],[2],[3],[1,2],[2,3],[1,3],[1,2,3]这两问可以用伪代码。void swap(int *a, int *b) //交换函数{ int tmp; tmp =*a; *a=*b; *b=tmp;}以为很简单,手写全排序第一遍就错了。func1( a[], n, m) if(m>n-1) return; end print(a); for(i=m+1... 阅读全文