蓝桥杯纪念日Java_2017年蓝桥杯javaB组第_03题

首先,看到题目给出的数据,知道输入数据只能整体输入,不然一个一个输入太浪费时间了。

所以利用java去空格的方法去掉空格,在将每一行作为一个字符串输入,在利用字符串转为字符数组的方法转换,注意:unicode编码实际上十进制0位unicode值的48

然后由题目的信息,依次迭代算出最后一行的值,

算出最后XX那一行的值求出最大最小值,因为不知道秤值和实际求的的值的比例用最小值处于给出的最小秤值

在用那个比率乘以最大值

开始我发现算出来的值与给出的最小值没有明显的对应关系,但应该也是一个考点吧。

代码如下。

import java.util.Scanner;

public class third {

public static void main(String[] args) {

Scanner scan=new Scanner(System.in);

String[] a=new String[29];

int k=0;

char [][] result=new char[29][29];

double [][] resultInt=new double[29][29];

for(int i=0;i<29;i++) {

a[i]=scan.nextLine().trim();

result[i]=a[i].toCharArray();

for(Character x:result[i]) {

if(!x.equals(' ')){

resultInt[i][k++]=(int)x-48;//,unicode编码48为0

}

}

k=0;

}

new third().count(resultInt);

}

private  void count(double [][] a) {

for(int row=0;row<28;row++) {

for(int col=0;col<=row;col++) {

a[row+1][col]+=a[row][col]*0.5;

a[row+1][col+1]+=a[row][col]*0.5;

}

}

int k=0;

double[] res=new double[30];//类里面定义的基本数据类型时会直接初始化的,不放心的同学可以将数组初始化为0.0

for(double x:a[28]) {

res[k]+=x/2;

res[k+1]+=x/2;

k++;}

double indexMin=100000000;

double indexMax=0;

for(double n:res) {

if(n>indexMax)

indexMax=n;

if(n

indexMin=n;

}

System.out.println("max:"+indexMax+"min:"+indexMin);

System.out.println((2086458231/indexMin)*indexMax);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值