flyinwuhan at sina dot com dot cn

解决方案 »

  1.   

    flyinwuhan(制怒·三思而后行)
    mengyun5005(梦云)
    谢谢你们的关注。
      

  2.   

    题目:
    用边长小于N的正方形方砖(不要求所有的方砖大小相同)不重叠地铺满N*N的正方形房间;
    代码:
    #include <stdio.h>
    #define MAX_N 100
     
    int n;
    int f[MAX_N+1][MAX_N+1];
     
    int min( int a, int b ) 
    {
     if( a < b ) 
      return a;
     else 
      return b;
    }
     
    int CalF( int x, int y ) 
    {
     int res, k;
     
     if( ( x == y ) && ( x < n ) )
      return 1;
     else 
     {
      res = 100000;
      for( k = ( x / 2 ); k < x; k++ )
       res = min( res, f[k][y] + f[x-k][y] );
      return res;
     }
    }
     
    void work() 
    {
     int x, y;
     
     for( x = 1; x <= n; x++ )
      for( y = 1; y <= n; y++ ) 
      {
       f[x][y] = CalF(x,y);
       f[y][x] = f[x][y];
      }    
    }
     
    void main() 
    {
     for( n = 2; n <= MAX_N; n++ ) 
     {
      work();
      printf("%5d %5d\n",n,f[n][n]);
     }
    }
    把这段代码转化为,
    可以实现输入不同的数值而画出相应的方砖分布。关键是实现
    最后的图形分布。
    例如:
    如果 n=4;
    则:
    AABB
    AABB
    CCDD
    CCDD
    只要体现出四块砖分布即可。