当前位置: 代码迷 >> 综合 >> 股票盈利问题(Java)——暴力法(Brute force)
  详细解决方案

股票盈利问题(Java)——暴力法(Brute force)

热度:107   发布时间:2023-11-17 08:31:58.0

分治法解此题:https://blog.csdn.net/qq_37486501/article/details/83000226

题目如下:

在这里插入图片描述

  • 注意:
    1.本题采用txt文件读入,屏幕输出;
    如果需要屏幕读入屏幕输出,可以留言或者自己改代码~
    2.下面分int类型和double类型的数据读入,请选择适合自己的…

  • 暴力法(Brute force)代码如下:
    要求(输入数据为int类型)

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;public class Lyx {public static void main(String[] args) {// TODO Auto-generated method stublong startTime = System.currentTimeMillis();try {FileReader in = new FileReader("input.txt");BufferedReader inin=new BufferedReader(in);//读入文件try {String str;   int i=0;int sum=Integer.parseInt(inin.readLine());int[] datalist=new int[sum];while((str=inin.readLine())!=null)//每次读一行,注意双层括号{//int data=Integer.parseInt(str);//System.out.println(data);//String强制转化成int类型datalist[i]=Integer.parseInt(str);//System.out.println("股價資料第"+i+"天"+datalist[i]);//String强制转化成int类型i++;}	int sub[ ][ ] = new int[sum+1][sum+1];for(int m=0;m<sum-1;m++)  {int p=0;for(int k=m+1;k<sum;k++){sub[m][p]=datalist[k]-datalist[m];p++;	}	}//System.out.print(sum);
//				for(int m=0;m<sum-1;m++)  
//				{
//					for(int k=0;k<sum-1;k++)
//					{
//						System.out.print(sub[m][k]+"\t");
//					}
//					System.out.println();
//				}int max=0,h=0,l=0;for(int row=0;row<sum;row++)  {for(int col=0;col<sum-1-row;col++){if(sub[row][col]>max){max=sub[row][col];h=row;l=col;}}}System.out.println("Brute Force求解:");System.out.println("第"+h+"日收盤買進第"+(h+l+1)+"日收盤賣出最高獲利為"+max+"元!");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}long endTime = System.currentTimeMillis();System.out.print("执行时间: "+(endTime-startTime)+" ms");	}
}
  • 暴力法(Brute force)代码如下:
    要求(输入数据为double类型)
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;public class Lyx {public static void main(String[] args) {// TODO Auto-generated method stub// TODO Auto-generated method stublong startTime = System.currentTimeMillis();try {FileReader in = new FileReader("input_2330.txt");BufferedReader inin=new BufferedReader(in);//读入文件try {String str;   int i=0;int sum=Integer.parseInt(inin.readLine());double[] datalist=new double[sum];while((str=inin.readLine())!=null)//每次读一行,注意双层括号{//int data=Integer.parseInt(str);//System.out.println(data);//String强制转化成int类型datalist[i]=Double.parseDouble(str);//System.out.println("股價資料第"+i+"天"+datalist[i]);//String强制转化成int类型i++;}	double sub[ ][ ] = new double[sum+1][sum+1];for(int m=0;m<sum-1;m++)  {int p=0;for(int k=m+1;k<sum;k++){sub[m][p]=datalist[k]-datalist[m];p++;	}	}//System.out.print(sum);
//				for(int m=0;m<sum-1;m++)  
//				{
//					for(int k=0;k<sum-1;k++)
//					{
//						System.out.print(sub[m][k]+"\t");
//					}
//					System.out.println();
//				}double max=0;int h=0,l=0;for(int row=0;row<sum;row++)  {for(int col=0;col<sum-1-row;col++){if(sub[row][col]>max){max=sub[row][col];h=row;l=col;}}}System.out.println("Brute Force求解:");System.out.println("第"+h+"日收盤買進第"+(h+l+1)+"日收盤賣出最高獲利為"+max+"元!");	} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}long endTime = System.currentTimeMillis();System.out.print("执行时间: "+(endTime-startTime)+" ms");	}}
  相关解决方案