|
本帖最后由 chenwq 于 2012-4-20 19:50 编辑
b可以写成b1 * b2,其中b1=a[0]*a[1]...*a[i-1],b2=a[i+1]*a[i+2]...*a[N-1],不计算其中的a,就相当于原式子除以a
然后,用两个循环,一个遍历b1,一个遍历b2- package cn.edu.xmu.acm.dp;
- public class LP {
- void test(int a[], int b[], int n) {
- int i;
- int temp = 1;
- temp = 1;
- for (i = 1; i < n; i++) {
- temp *= a[i - 1];
- b[i] = temp;
- }
- temp = 1;
- for (i = n - 2; i > 0; i--) {
- temp *= a[i + 1];
- b[i] *= temp;
- }
- b[0] = temp * a[1];
- for (i = 0; i < n; i++) {
- System.out.println(b[i]);
- }
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- LP lp = new LP();
- int[] a = new int[10];
- int[] b = new int[10];
- for (int i = 0; i < 10; i++) {
- a[i] = i+1;
- }
- lp.test(a, b, 10);
- }
- }
复制代码 |
|