UVa787 - Maximum Sub-sequence Product(最大连续乘积子串)

简介: UVa787 - Maximum Sub-sequence Product(最大连续乘积子串)
importjava.io.FileInputStream;
importjava.io.InputStreamReader;
importjava.io.BufferedReader;
importjava.io.OutputStreamWriter;
importjava.io.PrintWriter;
importjava.io.StreamTokenizer;
importjava.util.ArrayList;
importjava.math.BigInteger;
publicclassMain{
publicstaticfinalbooleanDEBUG=false;
publicStreamTokenizertokenizer;
publicBufferedReadercin;
publicPrintWritercout;
publicArrayList<Integer>v=newArrayList<Integer>();
publicvoidinit()
    {
try {
if (DEBUG) {
cin=newBufferedReader(newInputStreamReader(
newFileInputStream("d:\\OJ\\uva_in.txt")));
            } else {
cin=newBufferedReader(newInputStreamReader(System.in));
            }
cout=newPrintWriter(newOutputStreamWriter(System.out));
tokenizer=newStreamTokenizer(cin);
        } catch (Exceptione) {
e.printStackTrace();
        }
    }
publicStringnext()
    {
try {
tokenizer.nextToken();
if (tokenizer.ttype==StreamTokenizer.TT_EOF)
returnnull;
elseif (tokenizer.ttype==StreamTokenizer.TT_NUMBER) {
returnString.valueOf((int)tokenizer.nval);
            } elseif (tokenizer.ttype==StreamTokenizer.TT_WORD) {
returntokenizer.sval;
            } elsereturnnull;
        } catch (Exceptione) {
e.printStackTrace();
returnnull;
        }
    }
publicbooleaninput()
    {
v.clear();
while (true) {
Strings=next();
if (s==null) returnfalse;
if ("-999999".compareTo(s) ==0) break;
else {
v.add(Integer.parseInt(s));
            }
        }
returntrue;
    }
publicvoidsolve()
    {
BigIntegerMin=BigInteger.valueOf(v.get(0)), Max=Min;
BigIntegerans=Max;
for (inti=1, len=v.size(); i<len; i++) {
BigIntegerM=BigInteger.valueOf(v.get(i));
if (M.compareTo(BigInteger.valueOf(v.get(i)).multiply(Max)) <0) {
M=BigInteger.valueOf(v.get(i)).multiply(Max);
            }
if (M.compareTo(BigInteger.valueOf(v.get(i)).multiply(Min)) <0) {
M=BigInteger.valueOf(v.get(i)).multiply(Min);
            }
BigIntegerm=BigInteger.valueOf(v.get(i));
if (m.compareTo(BigInteger.valueOf(v.get(i)).multiply(Max)) >0) {
m=BigInteger.valueOf(v.get(i)).multiply(Max);
            }
if (m.compareTo(BigInteger.valueOf(v.get(i)).multiply(Min)) >0) {
m=BigInteger.valueOf(v.get(i)).multiply(Min);
            }
Max=M;
Min=m;
if (ans.compareTo(Max) <0) {
ans=Max;
            }
        }
cout.println(ans.toString());
cout.flush();
    }
publicstaticvoidmain(String[] args) 
    {
Mainsolver=newMain();
solver.init();
while (solver.input()) {
solver.solve();
        }
    }
}
目录
相关文章
|
搜索推荐 算法 测试技术
数据结构排序——计数排序和排序总结(附上912. 排序数组讲解)
数据结构排序——计数排序和排序总结(附上912. 排序数组讲解)
170 0
|
监控 安全 物联网
信息收集(二)
信息收集(二)
|
Java 程序员 C#
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
116 0
软件设计与架构复杂度问题之try-catch 语句的使用如何解决
软件设计与架构复杂度问题之try-catch 语句的使用如何解决
|
存储 NoSQL Go
【Go语言专栏】Go语言中的MongoDB操作与NoSQL应用
【4月更文挑战第30天】本文介绍了Go语言中操作MongoDB的方法和NoSQL应用的优势。MongoDB作为流行的NoSQL数据库,以其文档型数据模型、高性能和可扩展性被广泛应用。在Go语言中,通过mongo-go-driver库可轻松实现与MongoDB的连接及插入、查询、更新和删除等操作。MongoDB在NoSQL应用中的优点包括灵活的数据模型、高性能、高可用性和易于扩展,使其成为处理大规模数据和高并发场景的理想选择。
181 0
|
前端开发 容器
CSS实战笔记(九) BFC
CSS实战笔记(九) BFC
162 0
CSS实战笔记(九) BFC
|
测试技术
动态规划之使用最小花费爬楼梯
动态规划之使用最小花费爬楼梯
162 0
|
Web App开发 JavaScript 前端开发
JavaScript 技术篇-简单的两行js代码获取password不可见密码实例演示,js获取密码输入框里的值
JavaScript 技术篇-简单的两行js代码获取password不可见密码实例演示,js获取密码输入框里的值
985 0
JavaScript 技术篇-简单的两行js代码获取password不可见密码实例演示,js获取密码输入框里的值