解题思路:
要求释放的能量最大,那么如何计算才是最大呢?
将小一点数的尽可能的少乘,即将最小的数放在中间将其消掉,直至剩余两个数。
参考代码:
# 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语言程序设计教程(第三版)课后习题5.7 (C++代码)浏览:616 |
C语言程序设计教程(第三版)课后习题7.3 (C++代码)浏览:697 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:849 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:767 |
求圆的面积 (C语言代码)浏览:1366 |
Pascal三角 (C语言代码)格式错误浏览:551 |
简单的for循环浏览:1495 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:561 |
关于float,double变量的几点说明浏览:1926 |
链表数据求和操作 (C语言代码)浏览:1035 |