目录

1 分机号

2 五星填数

3 表格计算

前言:以下代码仅供参考,若有错误欢迎指正哦~


1 分机号

标题:分机号

X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位。比如:

751,520,321 都满足要求,而,
766,918,201 就不符合要求。 现在请你计算一下,按照这样的规定,一共有多少个可用的3位分机号码? 请直接提交该数字,不要填写任何多余的内容。
答案:
120
 public class Main {

     public static void main(String[] args) {
int count = 0;
for(int a = 0;a < 10;a++)
for(int b = 0;b < 10;b++)
for(int c = 0;c < 10;c++)
if(a > b && b > c)
count++;
System.out.println(count);
}
}

2 五星填数

标题:五星填数

如【图1.png】的五星图案节点填上数字:1~12,除去7和11。
要求每条直线上数字和相等。 如图就是恰当的填法。 请你利用计算机搜索所有可能的填法有多少种。
注意:旋转或镜像后相同的算同一种填法。 请提交表示方案数目的整数,不要填写任何其它内容。 答案:12

图1

 public class Main {
public static int count = 0; public void swap(int[] A, int i, int j) {
int temp = A[i];
A[i] = A[j];
A[j] = temp;
} public void check(int[] A) {
int sum1 = A[0] + A[2] + A[5] + A[8];
int sum2 = A[0] + A[3] + A[6] + A[9];
int sum3 = A[1] + A[2] + A[3] + A[4];
int sum4 = A[1] + A[5] + A[7] + A[9];
int sum5 = A[4] + A[6] + A[7] + A[8];
if(sum1 == sum2 && sum1 == sum3 && sum1 == sum4 && sum1 == sum5) {
count++;
} else
return;
} public void dfs(int[] A, int step) {
if(step == A.length) {
check(A);
return;
} else {
for(int i = step;i < A.length;i++) {
swap(A, i, step);
dfs(A, step + 1);
swap(A, i, step);
}
}
} public static void main(String[] args) {
Main test = new Main();
int[] A = {1,2,3,4,5,6,8,9,10,12};
test.dfs(A, 0);
System.out.println(count / 10);
}
}

3 表格计算

标题:表格计算

某次无聊中, atm 发现了一个很老的程序。这个程序的功能类似于 Excel ,它对一个表格进行操作。
不妨设表格有 n 行,每行有 m 个格子。
每个格子的内容可以是一个正整数,也可以是一个公式。
公式包括三种:
1. SUM(x1,y1:x2,y2) 表示求左上角是第 x1 行第 y1 个格子,右下角是第 x2 行第 y2 个格子这个矩形内所有格子的值的和。
2. AVG(x1,y1:x2,y2) 表示求左上角是第 x1 行第 y1 个格子,右下角是第 x2 行第 y2 个格子这个矩形内所有格子的值的平均数。
3. STD(x1,y1:x2,y2) 表示求左上角是第 x1 行第 y1 个格子,右下角是第 x2 行第 y2 个格子这个矩形内所有格子的值的标准差。 标准差即为方差的平方根。
方差就是:每个数据与平均值的差的平方的平均值,用来衡量单个数据离开平均数的程度。 公式都不会出现嵌套。 如果这个格子内是一个数,则这个格子的值等于这个数,否则这个格子的值等于格子公式求值结果。 输入这个表格后,程序会输出每个格子的值。atm 觉得这个程序很好玩,他也想实现一下这个程序。 「输入格式」
第一行两个数 n, m 。
接下来 n 行输入一个表格。每行 m 个由空格隔开的字符串,分别表示对应格子的内容。
输入保证不会出现循环依赖的情况,即不会出现两个格子 a 和 b 使得 a 的值依赖 b 的值且 b 的值依赖 a 的值。 「输出格式」
输出一个表格,共 n 行,每行 m 个保留两位小数的实数。
数据保证不会有格子的值超过 1e6 。 「样例输入」
3 2
1 SUM(2,1:3,1)
2 AVG(1,1:1,2)
SUM(1,1:2,1) STD(1,1:2,2) 「样例输出」
1.00 5.00
2.00 3.00
3.00 1.48 「数据范围」
对于 30% 的数据,满足: n, m <= 5
对于 100% 的数据,满足: n, m <= 50 资源约定:
峰值内存消耗(含虚拟机) < 512M
CPU消耗 < 2000ms 请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。
 import java.util.ArrayList;
import java.util.Scanner; public class Main {
public static int n, m;
public static double[][] value; public double getSum(int x1, int y1, int x2, int y2) {
double sum = 0;
for(int i = x1;i <= x2;i++)
for(int j = y1;j <= y2;j++)
sum = sum + value[i][j];
return sum;
} public double getAvg(int x1, int y1, int x2, int y2) {
int count = Math.abs((x2 - x1 + 1) * (y2 - y1 + 1));
double avg = getSum(x1, y1, x2, y2) / count;
return avg;
} public double getStd(int x1, int y1, int x2, int y2) {
int count = Math.abs((x2 - x1 + 1) * (y2 - y1 + 1));
double avg = getAvg(x1, y1, x2, y2);
double result = 0;
for(int i = x1;i <= x2;i++)
for(int j = y1;j <= y2;j++)
result = result + (value[i][j]-avg) * (value[i][j]-avg);
result = Math.sqrt(result / count);
return result;
} public boolean check(int x1, int y1, int x2, int y2) {
boolean judge = true;
for(int i = x1;i <= x2;i++) {
if(!judge)
break;
for(int j = y2;j <= y2;j++) {
if(value[i][j] == -1) {
judge = false;
break;
}
}
}
return judge;
} public String[] getOperaAndNum(String arrayA) {
int p = arrayA.indexOf("(");
int q = arrayA.indexOf(")");
String opera = arrayA.substring(0, p);
arrayA = arrayA.replace(':', ',');
String[] num = arrayA.substring(p+1, q).split(",");
String[] result = new String[5];
result[0] = opera;
for(int i = 0;i < 4;i++)
result[i + 1] = num[i];
return result;
} public void getResult(String[] A) {
value = new double[n][m];
ArrayList<String> list = new ArrayList<String>();
for(int i = 0;i < n;i++)
for(int j = 0;j < m;j++)
value[i][j] = -1;
for(int i = 0;i < A.length;i++) {
String[] arrayA = A[i].split(" ");
for(int j = 0;j < arrayA.length;j++) {
if(arrayA[j].charAt(0) >= '0' && arrayA[j].charAt(0) <= '9') {
value[i][j] = Double.valueOf(arrayA[j]);
} else {
String[] r = getOperaAndNum(arrayA[j]);
String opera = r[0];
int x1 = Integer.valueOf(r[1]) - 1;
int y1 = Integer.valueOf(r[2]) - 1;
int x2 = Integer.valueOf(r[3]) - 1;
int y2 = Integer.valueOf(r[4]) - 1;
if(check(x1, y1, x2, y2) == false) {
list.add(""+i+" "+j+" "+arrayA[j]);
continue;
}
if(opera.equals("SUM"))
value[i][j] = getSum(x1, y1, x2, y2);
else if(opera.equals("AVG"))
value[i][j] = getAvg(x1, y1, x2, y2);
else if(opera.equals("STD"))
value[i][j] = getStd(x1, y1, x2, y2);
}
}
} while(!list.isEmpty()) {
for(int i = list.size() - 1;i >= 0;i--) {
String[] temp = list.get(i).split(" ");
int a = Integer.valueOf(temp[0]);
int b = Integer.valueOf(temp[1]);
String[] r = getOperaAndNum(temp[2]);
String opera = r[0];
int x1 = Integer.valueOf(r[1]) - 1;
int y1 = Integer.valueOf(r[2]) - 1;
int x2 = Integer.valueOf(r[3]) - 1;
int y2 = Integer.valueOf(r[4]) - 1;
if(check(x1, y1, x2, y2) == false)
continue;
if(opera.equals("SUM"))
value[a][b] = getSum(x1, y1, x2, y2);
else if(opera.equals("AVG"))
value[a][b] = getAvg(x1, y1, x2, y2);
else if(opera.equals("STD"))
value[a][b] = getStd(x1, y1, x2, y2);
list.remove(i);
}
}
for(int i = 0;i < n;i++) {
for(int j = 0;j < m;j++) {
System.out.printf("%.2f", value[i][j]);
if(j != m - 1)
System.out.print(" ");
}
System.out.println();
}
} public static void main(String[] args) {
Main test = new Main();
Scanner in = new Scanner(System.in);
n = in.nextInt();
m = in.nextInt();
in.nextLine();
String[] A = new String[n];
for(int i = 0;i < n;i++)
A[i] = in.nextLine();
test.getResult(A);
}
}

算法笔记_209:第六届蓝桥杯软件类决赛部分真题(Java语言B组)的更多相关文章

  1. 算法笔记_214:第六届蓝桥杯软件类校赛真题(Java语言A组)

    目录 1 题目一 2 题目二 3 题目三 4 题目四 5 题目五 6 题目六 7 题目七 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 题目一 一个串的子串是指该串的一个连续的局部.如果不要求连续 ...

  2. 算法笔记_211:第七届蓝桥杯软件类决赛部分真题(Java语言A组)

    目录 1 阶乘位数 2 凑平方数 3 棋子换位 4 机器人塔 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 阶乘位数 阶乘位数 9的阶乘等于:362880 它的二进制表示为:10110001001 ...

  3. 算法笔记_213:第七届蓝桥杯软件类决赛部分真题(Java语言C组)

    目录 1 平方末尾 2 七星填数 3 打印数字 4 赢球票 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 平方末尾 平方末尾 能够表示为某个整数的平方的数字称为“平方数” 比如,25,64 虽然无 ...

  4. 算法笔记_207:第五届蓝桥杯软件类决赛部分真题(Java语言C组)

    目录 1 数字拆分 2 稍大的串   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 数字拆分 正整数可以表示为若干正整数的累加和. 如,对于正整数n=6,可以分划为: 6 5+1 4+2 4+1+ ...

  5. 算法笔记_208:第六届蓝桥杯软件类决赛真题(Java语言A组)

    目录 1 胡同门牌号 2 四阶幻方 3 显示二叉树 4 穿越雷区 5 切开字符串 6 铺瓷砖   前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 胡同门牌号 标题:胡同门牌号 小明家住在一条胡同里. ...

  6. 算法笔记_210:第六届蓝桥杯软件类决赛真题(Java语言C组)

    目录 1 机器人数目 2 生成回文数 3 空心菱形 4 奇怪的数列 5 密文搜索 6 居民集会 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 机器人数目 标题:机器人数目 少年宫新近邮购了小机器人 ...

  7. 算法笔记_216:第六届蓝桥杯软件类校赛部分真题(Java语言C组)

    目录 1 题目一 2 题目二 3 题目三 4 题目四 5 题目五 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 题目一 二项式的系数规律,我国数学家很早就发现了. 如[图1.png],我国南宋数学 ...

  8. 算法笔记_215:第六届蓝桥杯软件类校赛部分真题(Java语言B组)

    目录 1 题目一 2 题目二 3 题目三 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 题目一 java中提供了对正则表达式的支持. 有的时候,恰当地使用正则,可以让我们的工作事半功倍! 如下代码 ...

  9. 算法笔记_212:第七届蓝桥杯软件类决赛真题(Java语言B组)

    目录 1 愤怒小鸟 2 反幻方 3 打靶 4 路径之谜 5 碱基 6 圆圈舞 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 愤怒小鸟 愤怒小鸟 X星球愤怒的小鸟喜欢撞火车! 一根平直的铁轨上两火车 ...

随机推荐

  1. JDK居然还有Server和Client模式

    JDK这货居然还分Server和Client版本,但经过观察,据说从1.7+版本开始这两者运行的区别已经逐步减少了.所以接下来的分析没啥意义. 参考: http://www.oracle.com/te ...

  2. Linux内核相关常见面试题

      转:http://www.embeddedlinux.org.cn/html/xinshourumen/201303/11-2475.html   本文详细阐述了linux内核相关的开发职位面试中 ...

  3. jQuery异步获取json数据的2种方式

    jQuery异步获取json数据有2种方式,一个是$.getJSON方法,一个是$.ajax方法.本篇体验使用这2种方式异步获取json数据,然后追加到页面. 在根目录下创建data.json文件: ...

  4. MySQL数据库事务各隔离级别加锁情况--read committed && MVCC(转)

    本文转自https://m.imooc.com/article/details?article_id=17290 感谢作者 上篇记录了我对MySQL 事务 隔离级别read uncommitted的理 ...

  5. extjs 动态设定 DateField 最大值 最小值

    yxrqDate.minValue = new Date();yxrqDate.maxValue = new Date(9000,1,1);yxrqDate.validate(); //var pic ...

  6. dao层的泛型实现(2种方法)

    一: package com.wzs.test2.dao; import java.util.List; public interface CommonDAO { public <T> v ...

  7. UIButton使用方法汇总

    //按钮初始化类方法 UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];//这里创建一个圆角矩形的按钮 //按 ...

  8. Python爬虫——使用 lxml 解析器爬取汽车之家二手车信息

    本次爬虫的目标是汽车之家的二手车销售信息,范围是全国,不过很可惜,汽车之家只显示100页信息,每页48条,也就是说最多只能够爬取4800条信息. 由于这次爬虫的主要目的是使用lxml解析器,所以在信息 ...

  9. 【WCF】HTTP 无法注册 URL 进程,不具有此命名空间的访问权限

    背景   如题,在运行WCF宿主主机时,出现了问题.   捕获异常为:HTTP 无法注册 URL http://+:8000/WCF/.进程不具有此命名空间的访问权限(有关详细信息,请参见 http: ...

  10. 两个JS对象怎样才能相等

    在JS中,两个对象如何才能相等?下面的两个 Alert,只有一个输出true.  在JS中如何才能构造出两个JS对象相等? var prop1 = {asd:{def:'abc'}}; var pro ...