C++中的方砖问题
来源:优易学  2010-1-14 19:25:30   【优易学:中国教育考试门户网】   资料下载   IT书店

  /*
  Problem description
  用边长小于N的正方形方砖(注意,不要求所有的方砖大小相同,请看样例说明)不重叠地铺满N*N的正方形房间,最少要几块方砖。
  Input
  第一行是一个整数T,表示测试数据的组数,接下来的T 行,每一行是一个N(2<=N<=100)
  Output
  对于每一组测试数据输出一行,为最少需要的块数。
  Sample Input
  245
  Sample Output
  48
  */
  #include <iostream>
  using namespace std;
  int GetNum(int m,int n)
  {
  int a=0;
  if (n==0)
  {
  return 0;
  }
  a += m/n;
  a += GetNum(n,m%n);
  return a;
  }
  int main()
  {
  int T,N,temp,sum = 0,k=0;
  //freopen("10086.txt","r",stdin);
  cin>>T;
  int *pRes = new int[T];
  while (k<T)
  {
  cin>>N;
  if (N%2==0)
  {
  pRes[k]=4;
  k++;
  continue;
  }
  if (N%3==0)
  {
  pRes[k]=6;
  k++;
  continue;
  }
  sum = N*N;
  for (int i=N/2+1;i<N;i++)
  {
  temp = 0;
  temp += GetNum(N,i);
  temp += GetNum(N,N-i);
  if (sum > temp)
  sum = temp;
  }
  pRes[k]=sum;
  k++;
  }

[1] [2] 下一页

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训