50 条题解
-
71
兄弟们,又是一道费脑子的题目,可以画个图(不然纯脑子,可能会炸开)得出 for 循环的范围是从 1 ~ (i * 2 < n)然后每次将 i 增加1,再按题目意思来判断,求出最大值,上代码吧!~
#include <bits/stdc++.h> using namespace std; int main() { int n, max = 0; cin >> n; for (int i = 1;i * 2 < n; i++) { if ( (n - 2 * i) * (n - 2 * i) * i > max) max = (n - 2 * i) * (n - 2 * i) * i; } cout << max; return 0; }
-
16
这位大哥(17个赞)([hetao794786 ][LV 10]@ 8 个月前),您AC了吗?看看变量max这个变量是不是跟语句冲突了?看看我的,复制费用:点个赞。
#include <bits/stdc++.h> using namespace std; int n, maxx; int main() { cin >> n; for (int i = 1; i * 2 < n; i++) { if ((n - 2 * i) * (n - 2 * i) * i > maxx) { maxx = (n - 2 * i) * (n - 2 * i) * i; } } cout << maxx << endl; return 0;
-
2
首先判断有多少种可能的情况
int n,sum=0; cin>>n; for (int i=1;i<n;i++) { if (n-(i*2)>0) { sum++; } }
其次计算每种情况时的体积并用数组储存
int v[sum]; for (int m=1;m<=sum;m++) { v[m-1]=(n-(2*m))*(n-(2*m))*m;//因为边长必须非负,所以当2×m>0时记录体积。 }
最后求最大值并输出
//判断体积最大值。 int max1=v[0]; for (int m=0;m<sum;m++) { if (v[m]>max1) { max1=v[m]; } } cout<<max1; return 0;
分步去做就简单多了!!!
-
0
自己的一个思路,就是一直枚举,判断这次情况的面积大小,再和之前的最大值比较。 面积判断的if语句是从题目列的算式提取的,但我也不知道为什么这么写,求大佬解释! #刚开始做有点懵,看了几位大佬的题解还是不太理解,就自己尝试编,编完就理顺了......
#include <iostream> using namespace std; int main() { int a,v=0; cin>>a; for (int i=1;i<a/2;i++) { if ((a-i*2)*(a-i*2)*i>v) { v=(a-i*2)*(a-i*2)*i; } } cout<<v; return 0; }
信息
- ID
- 347
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 4
- 标签
- 递交数
- 5210
- 已通过
- 2376
- 上传者