解题思路:
要求释放的能量最大,那么如何计算才是最大呢?
将小一点数的尽可能的少乘,即将最小的数放在中间将其消掉,直至剩余两个数。
参考代码:
# include<stdio.h> int main() { int n,i,,k,left,right; int arr[200],min; long sum=0; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&arr[i]); while(n>2){ min=arr[1]; k=1; for(i=2;i<=n;i++){ if(arr[i]<min) k=i; } left=k-1;right=k+1; if(k==1) left=n; if(k==n) right=1; sum=sum+arr[left]*arr[k]*arr[right]; for(i=k;i<n;i++) arr[i]=arr[i+1]; n=n-1; } sum=sum+arr[1]*arr[2]*arr[2]; printf("%d\n",sum); return 0; }
0.0分
4 人评分
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:724 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:481 |
WU-图形输出 (C++代码)浏览:800 |
三角形 (C++代码)递推浏览:755 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:685 |
Cylinder (C语言描述+详细分析)浏览:3262 |
sizeof的大作用 (C语言代码)浏览:1448 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:509 |
矩阵的对角线之和 (C语言代码)浏览:1344 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:535 |