• 最近的一篇题目


    UVa11059Maximum Product

    题意

    给一串整数S,你需要找到其连续子序列中乘积最大的那个,输出其乘积。如果找到的答案不是正数,那么输出0,表示无解。

    另外注意:每组输入后面都有一行空格,每组输出后面也应该有一行空格。输入以EOF结束。

    然后,按照UVa中的数据范围,它不是很大,差不多就是: 1<=n<=18,-10<=s[i]<=10;

    本人思路:

    因为是最大乘积+连续子序列,所以这就是一个连乘题目 当然首先的一个思路就是暴力如下:

    那么在这么小的数据范围内,一个longlong即可,因为数内有负数,所以我们可以先搜索一遍是否拥有负数,若没有,就把整个S数组乘起来,或者负数的个数共有偶数个也可以乘起来

    such as this:ans*=s[i]

    若有负数且不为偶数个,那么就暴力搜索子序列中乘积最大的值,然后输出正解即可,这里的这个你可以认为是前缀和变成前缀乘

    (那啥,这个代码我没写我用的是另一种思路,上面这个比较好理解)

    另一种思路:

    直接暴力(本人走暴力流
    连续子序列的两种要素:起点和终点。

    这里和上面的第二部有些类似,需要枚举起点和终点的位置即所有连续子序列。对于其中元素来说,只需要枚举出全部连续子序列然后计算乘积比较就行。

    对于其中的乘积不会超过10^18,所以爆搜加一个longlong就可以解决问题

    释放代码(蠢蠢欲动的代码

    #include<iostream>
    #include<cstdio>
    #include<algorithm> 
    
    using namespace std;
    
    long long s[105];//数组,来存的 
    
    int main(){
        int n;
        int cnt=0;//这个是用来计算第几个解的 
        while(cin>>n){    
            long long ans=0;
            for (int i=0;i<n;++i)
                cin>>s[i];
            for (int i=1;i<=n;++i){
                for (int j=0;j+i<=n;++j){
                //这里的j是子序列的起点,从0开始找 
                    long long jishu=1;//这个计数器是用来比较连续子序列乘积与ans原数的大小 
                    //相当于计算器里的 M+ (笑) 
                    for (int k=j;k<j+i;++k){
                    //确定不同的终点 
                        jishu*=s[k];//连乘 
                        //尝试输出jishu,你就可以知道运行多少次
                        //cout<<jishu<<endl;(不用谢) 
                    }
                    ans=max(ans,jishu);//开始比较,并且换上较大的数到ans中 
                }
            }
            printf("Case #%d: The maximum product is %lld.
    
    ",++cnt,ans);//我认为这个输出比较麻烦
            //不要忘记
     
        }
        return 0;
    }
  • 相关阅读:
    20155313 2016-2017-2《Java程序设计》课程总结
    java第四次实验
    java第五次实验
    20155313 实验三《Java面向对象程序设计》实验报告
    20155313 2016-2017-2 《Java程序设计》第十周学习总结
    20155311《Java程序设计》实验五(网络编程与安全)实验报告
    学号20155311 2016-2017-2《Java程序设计》课程总结
    20155311高梓云补交的Mypc课下实践
    20155311 《Java程序设计》实验四 (Android程序设计)实验报告
    20155311 实验三 敏捷开发与XP实践 实验报告
  • 原文地址:https://www.cnblogs.com/U58223-luogu/p/9738654.html
Copyright © 2020-2023  润新知