题目描述
用长n米的篱笆围城长方形的生物园饲养小兔,要求生物园的长宽都是整数,请问怎样围才能使得小兔子的活动范围最大,输出最大面积?
输入格式
一个整数n
输出格式
最大面积
正方形面积最大,越接近正方形就越大
#include <stdio.h>
int main()
{
long long n,a,b,c;
scanf("%lld",&n);
c=n/2;
if(c%2==0)
a=b=c/2;
else
{
a=c/2;
b=(c+1)/2;
}
printf("%lld",a*b);
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
```c
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
int L = n / 2, W = (n + 1) / 2;
int area = L * W;
if (n % 2 == 0) {
L = W = n / 2;
area = L * W;
}
printf("%d\n", area);
return 0;
}
```
输入一个正整数n,表示布丁的数量。
每行输出一个由’0’和’1’组成的字符串,表示一种可行的吃布丁的顺序。其中0表示原味,1表示抹茶味。 请将可行的每种方案按字典序升序输入。
3
001
010
011
100
101
110
对于100%的数据,保证1≤n≤20;
#include <iostream>
using namespace std;
void f(int j, int n, int* a)
{
if (j == n) //如果吃的布丁的个数达到了n个,这时就代表一种情况结束了
{
int flag = 0;
for (int i = 0; i <= n - 3; i++)
{ //遍历该情况,如果存在连续三个相同的布丁,则这种情况flag取值变为1,并且不输出这种情况
if (a[i] == a[i + 1] && a[i] == a[i + 2] && a[i + 1] == a[i + 2])
flag = 1;
}
if (flag == 0) //如果flag取值依然为0,就代表这种情况符合要求,可以输出
{
for (int i = 0; i < n; i++)
{
cout << a[i];
}
cout << endl;
}
}
else
{
a[j] = 0; //讨论第j个布丁是原味的情况
f(j + 1, n, a); //先讨论0的情况,再讨论1的情况是为了按照字典序输出
a[j] = 1; //讨论第j个布丁是抹茶味的情况
f(j + 1, n, a);
}
}
int main()
{
int n = 0;
cin >> n;
int* p = new int[n];
f(0, n, p); //初始情况:吃了0个布丁,还有n个,数组p用来表示吃的情况
delete[] p;
return 0;
}
思路:
由于生物园的长宽都是整数,所以我们可以从1到n枚举生物园的长和宽,计算对应的面积,取最大值即可。
代码实现(C语言):
#include <stdio.h>
int main()
{
int n, max_area = 0;
scanf("%d", &n);
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
int area = i * j;
if(area > max_area)
{
max_area = area;
}
}
}
printf("%d\n", max_area);
return 0;
}
代码实现(C++):
#include <iostream>
using namespace std;
int main()
{
int n, max_area = 0;
cin >> n;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
int area = i * j;
if(area > max_area)
{
max_area = area;
}
}
}
cout << max_area << endl;
return 0;
}