原题链接:蓝桥杯算法提高-能量项链
0.0分
33 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
为什么用vector复制输入的值结果是错的, #include<iostream> #include<algorithm> #include<vector> using namespace std; int main() { int n; int sum = 0; cin >> n; int a[105]={0}; /*int min[105]={0};*/ vector<int>min(n + 5); for (int i = 1; i <= n; i++) { cin >> a[i]; min[i] = a[i]; } sort(min.begin(), min.end()); /* sort(min, min + n + 1);*/ for (int i = 1; i < n ; i++) { int iter; for (iter = 1; iter <= n; iter++) { if (a[iter] == min[i]) break; } int pre = iter - 1, next = iter + 1;说说我的想法: 其实根据那个例子可以看到,4个数字分别是2,3,5,10,最大就是10*2*3+10*3*5+10*5*10 规律就是想要得到最大能量,就要每次都有最大的数参与相乘,每次逐步消去剩下的数中最小的 所以我想到的就是用冒泡先把数据从小到大排序一遍,依次放在一个数组num[]里面,这样数的大小就都排号好了,然后取出数组的最后一个也就是最大的一个数10乘数组num[0]也就是2再乘num[1]也就是3,就是数组里的元素看作是i,也就是每次都是乘num[i]乘num[i+1], 代码如下,运行结果正确,但提交答案上去,说我答案错误 #include<iostream> using namespace std; int main() { int i,N,E=0,num[N],temp; cin>>N; for(i=0;i<N;i++){ cin>>num[i]; } for(i=0;i<N-1;i++){ for(int j=0;j<N-i-1;j++) { if(num[j]>num[j+1]) { temp=num[j]; num[j]=num[j+1]; num[j+1]=temp; } } } for(i=0;i<N-1;i++) { E=E+num[N-1]*num[i]*n