点赞(0)
 

0.0分

33 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 18 条评论

safety胖 2年前 回复TA
点个大大赞
火狐狸 2年前 回复TA
@李2912 其实我也以为一定要最大的参与才能得到最优,但是楼主给的这个例字就是不能从6开始,所以我从第50个答案开始就错了
zmctxws 2年前 回复TA
@e^πi+1=0 他答案对呀
zmctxws 2年前 回复TA
@萌新一大只 是呀
偶记 2年前 回复TA
为什么用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;
好吃的蚂蚱 3年前 回复TA
@李2912 @13539572912 然后就是你中间用了冒泡排序吧,但是这个是不能排序的T T,他的答案和珠子的顺序有关系
好吃的蚂蚱 3年前 回复TA
@萌新一大只 因为有顺序要求呀,我改了题解你可以看一下哟
好吃的蚂蚱 3年前 回复TA
@李2912 不一样的,我是每次求最小,把最小的吞了,那么此时不用关注最小的珠子前后的数字,但是你求最大的就要关注是往左边吞还是往右边吞。  举个例子, 2 3 10 4 1;你要10参与运算,那第一次就是2*3*10或者10*4*1,假如吞掉4,那最小的数字1之后还要参与一次计算,最坏的可能是每次都有1参与计算,得出来的值就很小。
李2912 3年前 回复TA
@李2912 (接上)    }     cout<<E; }
李2912 3年前 回复TA
说说我的想法:  其实根据那个例子可以看到,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