求和游戏——java

1006. 求和游戏

Description

石柱上有一排石头键盘,每个键上有一个整数。请你在键盘上选择两个键,使这两个键及其之间的键上的数字和最大。如果这个最大的和不为正,则输出“Game Over"。

Input Format

第1行:键的个数n。

第2..n+1行:键上的数字整数 ai。

−100≤ai≤100

对于70%的数据,2≤n≤1,000

对于100%的数据,2≤n≤1,000,000

Output Format

一行,最大和或者”Game Over"。

Sample Input

5
3
-5
7
-2
8

Sample Output

13

Sample Input

3
-6
-9
-10

Sample Output

Game Over

这道题说实话,我感到很难,当时想着是,如果自己去遍历所有情况然后去求和求最大值,这肯定不行,有太多的重复求和了,如果去把算过的存起来又是那么的不靠谱,百度了一下,真心觉得大神就是大神,竟然有人那么牛逼的实现。这道题我们先来看看怎样实现最大子列,这个的复杂度是线性的,只需要n代码如下:
                int curSum=0;
		int res=0;
		int minSum=0;
		for(int i=0;i<n;i++){
			int temp =in.nextInt();
			curSum+=temp;
			res = res>(curSum-minSum)?res:(curSum-minSum);
			minSum = minSum<curSum?minSum:curSum;
		}

 但是这道题是求至少包含两个数的最大子列所以做很简单的改动

 

minSum = minSum<(curSum-temp)?minSum:(curSum-temp);

  完整代码如下:

import java.util.Scanner;

public class Main {

	private static Scanner in;

	public static void main(String[] args) {
		in = new Scanner(System.in);
		int n=in.nextInt();
		int curSum=0;
		int res=0;
		int minSum=0;
		for(int i=0;i<n;i++){
			int temp =in.nextInt();
			curSum+=temp;
			res = res>(curSum-minSum)?res:(curSum-minSum);
			minSum = minSum<(curSum-temp)?minSum:(curSum-temp);
		}
		if(res>0){
			System.out.println(res);
		}else{
			System.out.println("Game Over");
		}
	}

}

  

求和游戏——java,布布扣,bubuko.com

时间: 2024-08-07 00:18:45

求和游戏——java的相关文章

俄罗斯方块游戏 --- java

俄罗斯方块游戏 如有疑问请查看:http://zh.wikipedia.org/zh-tw/%E4%BF%84%E7%BD%97%E6%96%AF%E6%96%B9%E5%9D%97 更多疑问请参考:http://java.itcast.cn/news/b4c1f433/34fd/4a7b/96bf/f1ae5e00ce70.shtml 游戏的运行结果如下: 代码的整体目录结构如下: 游戏发生的场地是在面板(panel)上,是JFrame框架把面板圈了起来 图形具有自己本身的特征,比如说形状,颜

贪吃蛇小游戏java实现代码分析

贪吃蛇小游戏java实现代码分析 贪吃蛇的小游戏,网上的代码比较多,今天周五,在教研室没啥事做,在电脑中发现了一个贪吃蛇的小游戏,于是就看了下实现的源码,发现别人写的代码确实挺好的,自己也是边加注释边进行理解的去看别人实现的游戏源码,发现还是挺有意思的.自己花了一个下午的时间看了源码,也加了一点小小的功能,于是,不写篇博客觉得对不起自己也,哈哈哈. 此游戏代码的思路非常的清晰,也相当好理解,没有太多难的地方,不过有很多值得学习的地方,因为,这份源码中,对java.awt包中的很多类的很多方法都进

【算法学习笔记】33.在线算法 SJTU OJ 1006 求和游戏

1006. 求和游戏 Description 石柱上有一排石头键盘,每个键上有一个整数.请你在键盘上选择两个键,使这两个键及其之间的键上的数字和最大.如果这个最大的和不为正,则输出“Game Over". Input Format 第1行:键的个数n. 第2..n+1行:键上的数字整数 ai. −100≤ai≤100 对于70%的数据,2≤n≤1,000 对于100%的数据,2≤n≤1,000,000 Output Format 一行,最大和或者”Game Over". Sample

猜拳游戏 java基础

//用循环方式实现和计算机玩猜拳的程序 (设定胜出条件--输3次或赢3次即退出) package eduask01; import java.util.*; public class Rask03 { public static void main(String[]args){ Scanner sc=new Scanner(System.in); int m=0,n=0;//累计输或赢的次数 for(;;){//死循环进行游戏 System.out.println("猜拳游戏:1.表示石头 2.

生命游戏 Java

本程序由四个类组成: 其中Init_data,用于初始化各个活细胞的状态judge_state,用于判断下一代的细胞状态,并进行更新.set_color,用于给GUI界面中各个细胞涂色set_frame,用于设置GUI界面的布局 1 /*初始化细胞状态类 2 * 四个模式 3 * 1.easy模式,一个大写的I 4 * 2.love模式,一个大写的LOVE 5 * 3.arrow模式,一个粗箭头 6 * 4.random模式,根据随机函数生成活细胞数 7 */ 8 package game_li

猜字游戏java

一.实践目的 1.掌握基本输入输出. 2.掌握方法定义与调用,理解参数传递方式. 3.掌握数组的声明.定义与初始化,数组的处理. 4.掌握数组作为方法参数和返回值. 二.实践要求 利用方法.数组.基本输入输出等Java基础知识,给出所选项目的基本设计与实现. 三.项目需求 所选项目名称:猜字游戏 项目需求描述,主要指应实现的主要功能.如:制作一个猜字小程序,又根据实践一:基础程序设计实践实践目的,只要作出相应的功能,实现相应的输入输出即可,窗口以及共多功能可以在后期完善! https://git

21点游戏java实现

21点的基本知识 21点是世界上比较流行的扑克游戏项目 除掉大小王的一副扑克牌,共计52张牌 21点不区分花色,其中A----10均代表扑克牌本身的点数J Q K代表10点 区分庄家和闲家,其中闲家可以优先要牌 而庄家在与闲家点数一样大的情况下,庄家赢,当有一方点数超过21点则另一方自动获胜,庄家的点数如果正好是21点,那么庄家直接获胜,其他情况以点数大的获胜 流程设计: 人机对战模式! 1由用户输入选择作庄还是作闲,电脑自动成为另一方 2随机为双方发两张牌 3询问闲家是否要牌,一直到闲家不再要

2019 乐逗游戏java面试笔试题 (含面试题解析)

本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.乐逗游戏等公司offer,岗位是Java后端开发,最终选择去了乐逗游戏. 面试了很多家公司,感觉大部分公司考察的点都差不多,所以将自己的心得记下来,希望能给正在找或者准备找工作的朋友提供一点帮助.另外,目前在乐逗游戏也做面试官的工作,身份从求职者变为面试官,看问题的很多角度也不一样,所以下文中既有求职者的视角,也有面试官的视角 面试流程 ??先说下面试流程,一般大公司都有3-4轮技术面,1轮的HR面.就乐逗游戏

1到100的奇数求和(java)

1 /* 2 Name:1-100所有奇数求和的程序 3 Power by Stuart 4 Date:2015-4-23 5 */ 6 7 8 public class DateTest01{ 9 10 public static void main(String args[]){ 11 //for循环,每次循环间隔2次 12 for(int i=1;i<=100;i+=2){ 13 t+=i;//t=i+1; 14 } 15 System.out.println("从1到100的奇数为