更新中..........

 
01 结果填空 (满分11分)

标题:年龄问题

s夫人一向很神秘。这会儿有人问起她的年龄,她想了想说:
"20年前,我丈夫的年龄刚好是我的2倍,而现在他的年龄刚好是我的1.5倍"。
你能算出s夫人现在的年龄吗?
注意:需要提交的是一个整数,不要填写任何多余的内容。

解答:这道题实际上估算以下就可以得出答案,不放心可以放到EXCEl中看看。
夫人为:40岁

02 结果填空(满分35分)

标题:最大乘积

把 1~9 这9个数字分成两组,中间插入乘号,
有的时候,它们的乘积也只包含1~9这9个数字,而且每个数字只出现1次。
比如:
984672 * 351 = 345619872
98751 * 3462 = 341875962
9 * 87146325 = 784316925
...
符合这种规律的算式还有很多,请你计算在所有这些算式中,乘积最大是多少?
注意:需要提交的是一个整数,表示那个最大的积,不要填写任何多余的内容。
(只提交乘积,不要提交整个算式)
code:
  1. package the.ninth;
  2.  
  3. import java.math.BigInteger;
  4. import java.util.ArrayList;
  5. import java.util.HashSet;
  6. import java.util.Random;
  7.  
  8. public class Solution1 {
  9.  
  10. private static int[] data = new int[101];
  11.  
  12. private static boolean[] vis = new boolean[101];
  13.  
  14. private static HashSet<Integer> sets=new HashSet<>();
  15.  
  16. static BigInteger xx=new BigInteger("345619872");
  17.  
  18. static Random random = new Random();
  19.  
  20. public static void main(String[] args) {
  21. for (int i = 1; i <= 9; i++) {
  22. sets.add(i);
  23. }
  24. //System.out.println(987654321);
  25. dfs(1,1);
  26. System.out.println(xx);
  27.  
  28. }
  29.  
  30. //9 * 87146325 = 784316925 815497632
  31. static void dfs(int index,int u) {
  32. if(index==10) {
  33.  
  34. ArrayList<Integer> list = new ArrayList<>();
  35. for (int i = 1; i <=9; i++) {
  36. list.add(data[i]);
  37. }
  38. StringBuffer buff1 = new StringBuffer();
  39. for (int i =u++; i < list.size(); i++) {
  40. buff1.append(list.remove(i));
  41. }
  42. BigInteger a = new BigInteger(buff1.toString());
  43. StringBuffer buff2 = new StringBuffer();
  44. for (int i = 0; i < list.size(); i++) {
  45. buff2.append(list.get(i));
  46. }
  47. BigInteger b = new BigInteger(buff2.toString());
  48. BigInteger multiply = a.multiply(b);
  49. char[] cs = multiply.toString().toCharArray();
  50. for (int i = 0; i < cs.length; i++) {
  51. for (int j = i+1; j < cs.length; j++) {
  52. if(cs[i]=='0'||cs[j]=='0')return;
  53. if(cs[i]==cs[j]) {
  54. return;
  55. }
  56. }
  57. }
  58. xx = multiply.max(xx);
  59. return;
  60. }
  61. for (int i = 1; i <=9; i++) {
  62. if(vis[i]==false) {
  63. data[index]=i;
  64. vis[i]=true;
  65. dfs(index+1,u);
  66. vis[i]=false;
  67. }
  68. }
  69. return;
  70. }
  71.  
  72. }
 
03 代码填空(满分27分)
 

标题:全排列

 
对于某个串,比如:“1234”,求它的所有全排列。
并且要求这些全排列一定要按照字母的升序排列。
对于“1234”,应该输出(一共4!=24行):
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321
 
下面是实现程序,请仔细分析程序逻辑,并填写划线部分缺少的代码。
 
#include <stdio.h>
#include <string.h>
 
//轮换前n个,再递归处理
void permu(char* data, int cur)
{
int i,j;
if(data[cur]=='\0'){
printf("%s\n", data);
return;
}
for(i=cur; data; i++){
char tmp = data;
for(j=i-1; j>=cur; j--) data[j+1] = data[j];
data[cur] = tmp;
 
permu(data, cur+1);
 
tmp = data[cur];
___________________________________ ;  //填空
data = tmp;
}
}
 
int main()
{
char a[] = "1234";
permu(a,0);
return 0;
}
 
注意:只需要填写划线部分缺少的内容,不要抄写已有的代码或符号。
 
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. //轮换前n个,再递归处理
  5. void permu(char* data, int cur) {
  6. int i,j;
  7. if(data[cur]=='\0') {
  8. printf("%s\n", data);
  9. return;
  10. }
  11. for(i=cur; i<; i++) {
  12. char tmp = data[i];
  13. for(j=i-; j>=cur; j--)
  14. data[j+] = data[j];
  15. data[cur] = tmp;
  16.  
  17. permu(data, cur+);
  18.  
  19. tmp = data[cur];
  20. data[cur]= data[cur+]; //填空
  21. data[cur] = tmp;
  22. }
  23. }
  24.  
  25. int main() {
  26. char a[] = "";
  27. permu(a,);
  28. return ;
  29. }
 
04 程序设计(满分45分)
 

标题:约瑟夫环

 
n 个人的编号是 1~n,如果他们依编号按顺时针排成一个圆圈,从编号是1的人开始顺时针报数。
(报数是从1报起)当报到 k 的时候,这个人就退出游戏圈。下一个人重新从1开始报数。
求最后剩下的人的编号。这就是著名的约瑟夫环问题。
 
本题目就是已知 n,k 的情况下,求最后剩下的人的编号。
 
题目的输入是一行,2个空格分开的整数n, k
要求输出一个整数,表示最后剩下的人的编号。
 
约定:0 < n,k < 1百万
 
例如输入:
10 3
 
程序应该输出:
4
 
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗  < 1000ms
 
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
 
注意:main函数需要返回0;
只使用ANSI C/ANSI C++ 标准;
不要调用依赖于编译环境或操作系统的特殊函数。
所有依赖的函数必须明确地在源文件中 #include <xxx>
不能通过工程设置而省略常用头文件。
提交程序时,注意选择所期望的语言类型和编译器类型。
 
  1. public static void main(String[] args) {
  2. int a=41;
  3. int b=3;
  4. LinkedList<Integer> list = new LinkedList<>();
  5. for (int i = 0; i < a; i++) {
  6. list.add(i+1);
  7. }
  8. while (list.size()>1){
  9. for (int i = 0; i < b-1; i++) {
  10. list.add(list.remove());
  11. }
  12. System.out.print("->"+list.getFirst());
  13. list.remove();//remve head
  14. }
  15. System.out.println(list.getFirst());
  16. }
 
 
05 程序设计(满分77分)
 

标题:交换次数

 
IT产业人才需求节节攀升。业内巨头百度、阿里巴巴、腾讯(简称BAT)在某海滩进行招聘活动。
招聘部门一字排开。由于是自由抢占席位,三大公司的席位随机交错在一起,形如:
ABABTATT,这使得应聘者十分别扭。
于是,管理部门要求招聘方进行必要的交换位置,使得每个集团的席位都挨在一起。即最后形如:
BBAAATTT 这样的形状,当然,也可能是:
AAABBTTT 等。
 
现在,假设每次只能交换2个席位,并且知道现在的席位分布,
你的任务是计算:要使每个集团的招聘席位都挨在一起需要至少进行多少次交换动作。
 
输入是一行n个字符(只含有字母B、A或T),表示现在的席位分布。
输出是一个整数,表示至少交换次数。
 
比如,输入:
TABTABBTTTT
 
程序应该输出:
3
 
再比如,输入:
TTAAABB
 
程序应该输出:
0
 
我们约定,输入字符串的长度n 不大于10万
 
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗  < 1000ms
 
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
 
注意:main函数需要返回0;
只使用ANSI C/ANSI C++ 标准;
不要调用依赖于编译环境或操作系统的特殊函数。
所有依赖的函数必须明确地在源文件中 #include <xxx>
不能通过工程设置而省略常用头文件。
提交程序时,注意选择所期望的语言类型和编译器类型。
 
06 程序设计(满分105分)
 不清楚是否正确,给了几个数据正常:
  1. public class B {
  2.  
  3. private static int MINX = 0;
  4.  
  5. private static int x = 0;
  6. private static int y = 0;
  7.  
  8. static boolean flag = false;
  9. //TABTABBTTTT
  10. public static void main(String[] args) {
  11. String str = "TTAAABB";//TABTABBTTTT
  12. char[] arr = str.toCharArray();
  13. char s = 0;
  14. int sx = 0;
  15. char e = 0;
  16. int ex = 0;
  17.  
  18. boolean flag2=true;
  19. for (int i = 0; i < arr.length-1; i++) {
  20. if(arr[i]==arr[i+1]) {
  21. y++;
  22. flag2=false;
  23. }
  24. if(arr[i]!=arr[i+1]&&flag2==false) {
  25. y--;
  26. }
  27. }
  28. if(y==1) {
  29. System.out.println(((arr.length-1)/2));
  30. return;
  31. }
  32. for (int i = 0; i < arr.length - 1; i++) {
  33. if (arr[i] == arr[i + 1] && flag == false) {
  34. flag = true;
  35. s = arr[i];
  36. sx = i;
  37. } else {
  38. e = arr[i];
  39. ex = i;
  40. }
  41. }
  42. //System.out.println(s + " " + e);
  43. //System.out.println(sx + " " + ex);
  44. /*// inline
  45. for (int i = sx; i < ex-1; i++) {
  46. if(arr[i]!=arr[i+1]) {
  47. x++;
  48. }
  49. }*/
  50. for (int i = 0; i < sx; i++) {
  51. if (arr[i] == arr[sx]) {
  52. char temp = arr[sx - 1];
  53. //System.out.println(arr[sx - 1]);
  54. arr[sx - 1] = arr[i];
  55. arr[i] = temp;
  56. sx--;
  57. x++;
  58. }
  59. }
  60. for (int i = 0; i < sx; i++) {
  61. if (arr[i] == e) {
  62. x++;
  63. }
  64. }
  65. System.out.println(x);
  66. }

标题:迷宫与陷阱

 
小明在玩一款迷宫游戏,在游戏中他要控制自己的角色离开一间由NxN个格子组成的2D迷宫。  
小明的起始位置在左上角,他需要到达右下角的格子才能离开迷宫。
每一步,他可以移动到上下左右相邻的格子中(前提是目标格子可以经过)。
迷宫中有些格子小明可以经过,我们用'.'表示;
有些格子是墙壁,小明不能经过,我们用'#'表示。
此外,有些格子上有陷阱,我们用'X'表示。除非小明处于无敌状态,否则不能经过。
 
有些格子上有无敌道具,我们用'%'表示。
当小明第一次到达该格子时,自动获得无敌状态,无敌状态会持续K步。
之后如果再次到达该格子不会获得无敌状态了。  
 
处于无敌状态时,可以经过有陷阱的格子,但是不会拆除/毁坏陷阱,即陷阱仍会阻止没有无敌状态的角色经过。
 
给定迷宫,请你计算小明最少经过几步可以离开迷宫
 
 
输入
----
第一行包含两个整数N和K。 (1 <= N <= 1000 1 <= K <= 10)  
以下N行包含一个NxN的矩阵。
矩阵保证左上角和右下角是'.'。
 
输出
----
一个整数表示答案。如果小明不能离开迷宫,输出-1。
 
【样例输入1】
5 3
...XX
##%#.
...#.
.###.
.....
 
【样例输出1】
10
 
【样例输入2】
5 1
...XX
##%#.
...#.
.###.
.....
 
【样例输出2】
12
 
 
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗  < 3000ms
 
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
 
注意:main函数需要返回0;
只使用ANSI C/ANSI C++ 标准;
不要调用依赖于编译环境或操作系统的特殊函数。
所有依赖的函数必须明确地在源文件中 #include <xxx>
不能通过工程设置而省略常用头文件。
 
提交程序时,注意选择所期望的语言类型和编译器类型。

code:

  1. package the.ninth;
  2.  
  3. import java.util.LinkedList;
  4. import java.util.Scanner;
  5.  
  6. public class E {
  7.  
  8. private final static int MAXN = 1006;
  9. private static char[][] maps = new char[MAXN][MAXN];
  10. private static int [][][] dp=new int[MAXN][MAXN][10];
  11.  
  12. private static int[] x = { 0, 0, 1, -1 };
  13. private static int[] y = { 1, -1, 0, 0 };
  14.  
  15. private static int K = 0;
  16. private static int n = 0;
  17.  
  18. public static void main(String[] args) {
  19. for (int i = 0; i < MAXN; i++) {
  20. for (int j = 0; j < MAXN; j++) {
  21. for (int k = 0; k < 10; k++) {
  22. dp[i][j][k]=100000;
  23. }
  24. }
  25. }
  26. Scanner input = new Scanner(System.in);
  27. n = input.nextInt();
  28. K = input.nextInt();
  29. for (int i = 0; i < n; i++) {
  30. maps[i] = input.next().toCharArray();
  31. }
  32. class Nodex {
  33. int x;
  34. int y;
  35. int k;
  36. public Nodex() {
  37. }
  38. public Nodex(int x, int y,int k) {
  39. this.x = x;
  40. this.y = y;
  41. this.k = k;
  42. }
  43. }
  44.  
  45. LinkedList<Nodex> queue = new LinkedList<>();
  46.  
  47. Nodex head = new Nodex(0, 0, 0);
  48. dp[0][0][0]=0;
  49. queue.add(head);
  50.  
  51. while (!queue.isEmpty()) {
  52. Nodex cur = queue.poll();
  53.  
  54. for (int i = 0; i < 4; i++) {
  55. int newx = cur.x + x[i];
  56. int newy = cur.y + y[i];
  57. Nodex node=new Nodex();
  58. node.x=newx;
  59. node.y=newy;
  60. node.k = cur.k>0? cur.k - 1 : 0;
  61. if(newx<0||newx>=n||newy<0||newy>=n)continue;
  62. if(maps[newx][newy]=='#') continue;
  63. if(maps[newx][newy]=='%') node.k = K-1;
  64. else if(maps[newx][newy] == 'X' && cur.k<=0)continue;
  65. if (dp[newx][newy][node.k] > dp[cur.x][cur.y][cur.k] + 1) {
  66. dp[newx][newy][node.k] = dp[cur.x][cur.y][cur.k] + 1;
  67. queue.push(node);
  68. }
  69.  
  70. if (maps[cur.x][cur.y] == '%') maps[cur.x][cur.y] = '.';
  71. }
  72. }
  73.  
  74. int ans = Integer.MAX_VALUE;
  75. for (int i = 0; i < K; i++) ans = Math.min(ans, dp[n-1][n-1][i]);
  76. if (ans == Integer.MAX_VALUE) System.out.println("-1");
  77. else System.out.println(ans);
  78. }
  79. }

第九届蓝桥杯大赛个人赛决赛(软件类)真题Java的更多相关文章

  1. 第七届蓝桥杯大赛个人赛决赛(软件类C语言B组)第一题:一步之遥

      这题好多人用爆搜/bfs来做,然而这题可用exgcd(扩展欧几里得)做,而且很简便. 先附原题: 一步之遥 从昏迷中醒来,小明发现自己被关在X星球的废矿车里. 矿车停在平直的废弃的轨道上. 他的面 ...

  2. 第九届蓝桥杯JavaB组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.三角形面积 已知三角形三个顶点在直角坐标系下的坐标分别为: (2.3, 2.5) (6.4, 3.1) (5.1, 7.2) 求该三角 ...

  3. 第六届蓝桥杯JavaB组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.分机号 X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位.比如: 751,520, ...

  4. 第六届蓝桥杯JavaA组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.胡同门牌号 小明家住在一条胡同里.胡同里的门牌号都是连续的正整数,由于历史原因,最小的号码并不是从1开始排的. 有一天小明突然发现了有 ...

  5. 【第九届蓝桥杯大赛决赛真题】JAVA大学C组题解

    有空就会更新.... 有的题目重复了:再另一篇帖子:https://www.cnblogs.com/dgwblog/p/9090923.html 02 结果填空(满分29分) 标题:海盗与金币 12名 ...

  6. 第八届蓝桥杯大赛个人赛决赛(软件类)真题C++

    哥德巴赫分解 哥德巴赫猜想认为:不小于4的偶数都可以表示为两个素数的和. 你不需要去证明这个定理,但可以通过计算机对有限数量的偶数进行分解,验证是否可行. 实际上,一般一个偶数会有多种不同的分解方案, ...

  7. 第九届蓝桥杯B组决赛 调手表(完全背包)

    问题描述 M78 星云的一个小时有 n 分钟. 大家都知道,手表只有一个按钮可以把当前的数加一.在调分钟的时候,如果当前显示的数是 0 ,那么按一下按钮就会变成 1,再按一次变成 2 .如果当前的数是 ...

  8. 第六届蓝桥杯JavaC组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.机器人数目 少年宫新近邮购了小机器人配件,共有3类,其中, A类含有:8个轮子,1个传感器 B类含有: 6个轮子,3个传感器 C类含有 ...

  9. 第七届蓝桥杯JavaC组国(决)赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.平方末尾 能够表示为某个整数的平方的数字称为"平方数" 比如,25,64 虽然无法立即说出某个数是平方数,但经常可 ...

随机推荐

  1. PropertyPlaceholderConfigurer使用及@Value使用注意事项

    思考 PropertyPlaceholderConfigurer和<context:property-placeholder/>有何区别? @Value在Controller层和Servi ...

  2. Python爬虫实战五之模拟登录淘宝并获取所有订单

    经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持. 温馨提示 更新时间,2016-02-01,现在淘宝换成了滑块验证了 ...

  3. linux tomcat自动部署shell

    #!/bin/bash   #defined    TOMCAT_HOME="/usr/java/tomcat/tomcat"   TOMCAT_PORT=80   PROJECT ...

  4. [GO]多任务的资源竞争问题

    package main import ( "fmt" "time" ) func Printer(s string) { for _, data := ran ...

  5. python操作mysql数据库系列-安装MySQLdb

    一波三折,先是pip命令出现问题,然后各种方法尝试解决.然后是直接使用pip2命令安装报错,mysql-python库安装再次出现问题.于是使用国内镜像的方式去安装:pip2 install MySQ ...

  6. JVM指令集(指令码、助记符、功能描述)

    JVM指令集(指令码.助记符.功能描述) 指令码 助记符 功能描述 0x00 nop 无操作 0x01 aconst_null 指令格式:  aconst_null 功能描述:  null进栈. 指令 ...

  7. 流程控制语句(if、for、while、do while、switch、 break、continue)

    3:流程控制语句    (1)顺序结构 从上往下,依次执行    (2)选择结构    按照不同的选择,执行不同的代码    (3)循环结构 做一些重复的代码 4:if语句    (1)三种格式   ...

  8. T Fiddler 教程 _转

    阅读目录 Fiddler的基本介绍 Fiddler的工作原理 同类的其它工具 Fiddler如何捕获Firefox的会话 Fiddler如何捕获HTTPS会话 Fiddler的基本界面 Fiddler ...

  9. Rational Rose简明实用教程

    转载 https://blog.csdn.net/gz153016/article/details/49641847 求下列算法的时间复杂度 void aFunc(int n) { ; i < ...

  10. EF中三大开发模式之DB First,Model First,Code First以及在Production Environment中的抉择

    一:ef中的三种开发方式 1. db first... db放在第一位,在我们开发之前必须要有完整的database,实际开发中用到最多的... <1> DBset集合的单复数... db ...