专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »C 教程 » 一方砖多少块:C++中的方砖问题 »正文

一方砖多少块:C++中的方砖问题

来源: 发布时间:星期日, 2009年8月16日 浏览:72次 评论:0
/*

Problem description

用边长小于N正方形方砖(注意不要求所有方砖大小相同请看样例介绍说明)不重叠地铺满N*N正方形房间最少要几块方砖

Input

行是个整数T,表示测试数据组数,接下来T 行行是个N(2<=N<=100)

Output

对于每组测试数据输出为最少需要块数

Sample Input

245
Sample Output

48

*/

# <iostream>

using std;



GetNum( m, n)

{

a=0;

(n0)

{

0;

}

a m/n;

a GetNum(n,m%n);

a;

}





{

T,N,temp,sum = 0,k=0;

//freopen("10086.txt","r",stdin);

cin>>T;

*pRes = [T];

while (k<T)

{

cin>>N;

(N%20)

{

pRes[k]=4;

k;

continue;

}

(N%30)

{

pRes[k]=6;

k;

continue;

}

sum = N*N;

for ( i=N/2+1;i<N;i)

{

temp = 0;

temp GetNum(N,i);

temp GetNum(N,N-i);

(sum > temp)

sum = temp;

}

pRes[k]=sum;

k;

}

for ( t=0;t<T;t)

cout<<pRes[t]<<endl;

//fclose(stdin);

0;

}



# <stdio.h>

# MAX_N 100



n;

f[MAX_N+1][MAX_N+1];



min( a, b )

{

( a < b )

a;



b;

}



CalF( x, y )

{

res, k;



( ( x y ) && ( x < n ) )

1;

{

res = 100000;

for( k = ( x / 2 ); k < x; k )

res = min( res, f[k][y] + f[x-k][y] );

res;

}

}



void work

{

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

{

for( n = 2; n <= MAX_N; n ) {

work;

prf("%5d %5d\n",n,f[n][n]);

}

}
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: