Chinaunix首页 | 论坛 | 博客
  • 博客访问: 368932
  • 博文数量: 100
  • 博客积分: 2500
  • 博客等级: 大尉
  • 技术积分: 1209
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-15 21:24
文章分类

全部博文(100)

文章存档

2011年(100)

分类: C/C++

2011-04-17 19:09:53


  1. #include <stdio.h>
  2. #define N 3

  3. int
  4. hls(int n, int a[N][N])
  5. {
  6.     int i, j, col, m, k, sum=0, tmp[N][N];
  7.     if (n == 1)
  8.     {
  9.         return (a[0][0]);
  10.     }
  11.     if (n == 2)
  12.     {
  13.         return (a[0][0]*a[1][1] - a[0][1]*a[1][0]);
  14.     }

  15.     for (col = 0; col < n; col++)
  16.     {
  17.         for (i =0; i < N; i++)
  18.         {
  19.             for (j = 0; j < N; j++)
  20.             {
  21.                 tmp[i][j] = a[i][j];
  22.             }
  23.         }

  24.         for (m = col; m < n; m++)
  25.         {
  26.             for (k = 0; k < n-1; k++)
  27.             {
  28.                 a[k][m] = a[k][m+1];
  29.             }
  30.         }
  31.         
  32.         if ((col+n-1)%2)
  33.         {
  34.             sum -= a[n-1][col] * hls(n-1,a);
  35.         }
  36.         else
  37.         {
  38.             sum += a[n-1][col] * hls(n-1, a);
  39.         }
  40.         for (i =0; i < N; i++)
  41.         {
  42.             for (j = 0; j < N; j++)
  43.             {
  44.                 a[i][j] = tmp[i][j];
  45.             }
  46.         }

  47.     }

  48.     return (sum);
  49. }

  50. int
  51. main(void)
  52. {
  53.     int a[N][N] =
  54.     {
  55.         {
  56.             1,1,1
  57.         },
  58.         {
  59.             1,2,4
  60.         },
  61.         {
  62.             1,3,9
  63.         }
  64.     };

  65.     printf("Result: %d\n", hls(N,a));

  66.     return (0);
  67. }



阅读(1376) | 评论(0) | 转发(0) |
0

上一篇:插入排序

下一篇:二进制数中1的个数

给主人留下些什么吧!~~