大矩形切割为小矩形的题目
将a*b的矩形剪切为c*d的矩形,我是这样的:先简单判断max(a,b)>=max(c,d)&&min(a,b)>=min(c,d),这样剪切成功。
再考虑沿着对角线切,k是矩形a*b对角线,H是对角线k上的高,x=min(c,d)/2;y=max(c,d);由相似三角形有,( len /k)=((H-x)/H);解出len=k - (k*k*x)/a*b;
判断y<=len,则剪切成功。
这样正确吗?或者给出你的判定原理
#include<stdio.h>
#include<math.h>
int main()
{
int n,a,b,c,d;
double max,min,max2,min2;
double maxt,mint;
scanf("%d",&n);
while(n--)
{
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a*b<c*d) {printf("Cutting is impossible.\n");continue;}
max=a>b?a:b;
min=a>b?b:a;
max2=c>d?c:d;
min2=c>d?d:c;
mint=sqrt(a*a+b*b);
maxt=mint-(a*a+b*b)*(min2/2)/(a*b);
if(max>=max2&&min>=min2||(max2<=maxt)) printf("Cutting is possible.\n");
else
printf("Cutting is impossible.\n");
}
return 0;
}