(c语言)切蛋糕问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(c语言)切蛋糕问题相关的知识,希望对你有一定的参考价值。
(c语言)切蛋糕问题:
一个矩形蛋糕,长宽都是正整数,要求用户输入蛋糕的长和宽,
并且由用户决定切分成多少块。
编写一个函数:
1.求怎样切割使得最大的那一块面积最小。
2.并输出最大的那一块的面积。
注意:
原来的蛋糕是矩形的,新切好的全部蛋糕也是矩形的。
切割的轨迹需要平行于原蛋糕的边,保证每块新蛋糕的边长均为整数。
补充: 最大的一块最小,也就是切出来的几块尽量一样大,这样其中最大的那一块便是最小了啊。
距离2×3切3块
当然是2 2 2切了,最大的便是2
如果是1 2 3切。最大的便成了3了啊
你如果回答的上了给您追加分
追答不是为了分数。随便一说 。。。给你点提示行吗?
我怀疑题目有问题,还是你自己没理解题意,还是自己造的题目?长宽都是正整数切出一样大小的蛋糕,你就切出 长(假设是3)的个数不就行。。。。???
不是,这是斯坦福的一道c语言的题目。它的意思是要尽可能均分
切蛋糕
问题描述
一块边长是2L的正方形蛋糕落在坐标轴内,中心在原点上,现在你竖直切了m次,水平切了n次,中间还挖出了一个长度是2P的正方形的洞,洞的中心也在原点上。求最终蛋糕分成了几块。
输入格式
输入cake.in共四行。
第一行一个数L,第二行一个数P
第三行n个数,表示水平切的位置
第四行m个数,表示竖直切的位置
输出格式
一个数,表示最终那个蛋糕的个数
样例输入
5
3
1 -4
1
样例输出
6
数据范围
30% 的数据 L,P≤10,1≤n,m≤2
100%的数据 1≤L,P,1≤n,m≤100
题解
假设中间没有挖掉一个正方形的洞,那么,最终会有(n+1)*(m+1)个蛋糕。
而事实上中间挖掉一个正方形的洞,这对答案会有什么影响呢?
如图,
有几个小蛋糕完全被正方形的洞覆盖了,这些蛋糕不能算入答案的总个数。
假设水平切有px次经过挖掉的洞,竖直切有py次经过挖掉的洞,显然,完全被正方形覆盖的校蛋糕有(px-1)*(py-1)个;
最终答案就是(n+1)*(m+1)减去完全被洞覆盖的蛋糕数。
1 #include <string> 2 #include <cstdio> 3 int L,P,ans,x[105],y[105],xt,yt,px,py; 4 bool visx[200],visy[200],vis; 5 int main() 6 { 7 int res,i,j,f; 8 char ch; 9 bool fg,mak; 10 scanf("%d%d ",&L,&P); 11 for (ch=getchar();ch!=‘ ‘;ch=getchar()) 12 { 13 res=0; f=1; 14 while ((ch<‘0‘ || ch>‘9‘) && ch!=‘-‘ && ch!=‘ ‘) ch=getchar(); 15 if (ch==‘ ‘) break; 16 if (ch==‘-‘) f=-1,ch=getchar(); 17 while (ch>=‘0‘ && ch<=‘9‘) 18 res=res*10+ch-‘0‘,ch=getchar(); 19 res*=f; 20 if (!visx[res+100]) visx[res+100]=1,x[++xt]=res; 21 if (ch==‘ ‘) break; 22 } 23 for (ch=getchar();ch!=‘ ‘;ch=getchar()) 24 { 25 res=0; f=1; 26 while ((ch<‘0‘ || ch>‘9‘) && ch!=‘-‘ && ch!=‘ ‘) ch=getchar(); 27 if (ch==‘ ‘) break; 28 if (ch==‘-‘) f=-1,ch=getchar(); 29 while (ch>=‘0‘ && ch<=‘9‘) 30 res=res*10+ch-‘0‘,ch=getchar(); 31 res*=f; 32 if (!visy[res+100]) visy[res+100]=1,y[++yt]=res; 33 if (ch==‘ ‘) break; 34 } 35 for (i=1;i<=xt;i++) 36 if (-P<=x[i] && x[i]<=P) 37 px++; 38 for (i=1;i<=yt;i++) 39 if (-P<=y[i] && y[i]<=P) 40 py++; 41 if (px<1) px=1; 42 if (py<1) py=1; 43 printf("%d",(xt+1)*(yt+1)-(px-1)*(py-1)); 44 return 0; 45 }
以上是关于(c语言)切蛋糕问题的主要内容,如果未能解决你的问题,请参考以下文章