赛码网OJ题目--股神
来源:互联网 发布:中国it从业人数 编辑:程序博客网 时间:2024/05/17 07:51
1. 题目描述
2. 第一版
import java.util.Scanner;public class 股神 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int day;while (scanner.hasNext()) {day = scanner.nextInt();long time1 = System.currentTimeMillis();System.out.println(getMoney(day));long time2 = System.currentTimeMillis();System.out.println(time2-time1);}}public static int getMoney(int day){int total = 0;for (int i = 1; i <= day; i++) {if(isIncr(i)){total++;}else{total--;}}return total;}public static boolean isIncr(int day){int interval = 3;int temp = 3;while (temp<day) {temp += interval++;}if(temp==day){return false;}else{return true;}}}
结果发现:
Time Limit Exceeded
TLE
您的程序运行的时间已经超出了题目的时间限制。
问题就出在每个数字都要进行判断
比如10000000 结果是9991060 而所需时间是20467ms 20多秒才能计算出来
3. 第二版
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int day;while (scanner.hasNext()) {day = scanner.nextInt();long time1 = System.currentTimeMillis();System.out.println(getMoney(day));long time2 = System.currentTimeMillis();System.out.println(time2-time1);}}public static int getMoney(int day) {if(day==1){return 1;}else{int curr = 1;int cycleNum = 1;int total = 1;while (curr < day) {// 执行一个循环{// 第一个循环是 第二天 第三天// 第二个循环是 第四天 第五天 第六天...for (int i = 0; i < cycleNum; i++) {total++;curr++;if (curr == day) {return total;}}// 完成循环的最后一步total--;curr++;}if (curr == day) {return total;}cycleNum++;}return total;}}}
比如10000000 结果是9991060 而所需时间是7ms
4. 总结
算法优化是多么明显地带来计算效率的提升!
0 0
- 赛码网OJ题目--股神
- oj题目
- HDU OJ 题目分类
- hdu oj 题目分类
- hdu OJ题目分类
- 华为OJ一个题目
- oj平台题目一
- 第十六周OJ题目
- HD OJ 题目分类
- hdu oj 题目分类
- OJ题目:雇佣兵
- OJ题目--数字整除
- 各大OJ题目分类
- 杭电OJ 题目分类
- 各大OJ题目分类
- 刘汝佳黑书 pku等oj题目
- 刘汝佳黑书 pku等oj题目
- 杭电OJ题目分类
- poj 1094 topo 在线处理数据
- ngResource模块的使用
- Eclipse下的Android工程改名
- 最小费用流bellman-ford算法总结
- 链表中环的入口节点
- 赛码网OJ题目--股神
- 设计模式之禅
- 如何减少bug(php 版本)
- magento 修改xml的布局
- 线段树的构造 II
- Ubuntu14.04 LTS下破解myeclipse2015
- Wireshark入门与进阶系列四之过滤语法
- 设计莫原则和模式
- Struts2 return JSON data and convert the date field