1、Api运用题(日历Calendar)
题目:有邪教称1999年12月31日是世界末日,当然谣言已经不攻自破。还有人称今后的某个世纪末的12月31日,如果是星期一则会…有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!!!于是"谣言制造商"又修改为星期日…
1999年12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即XX99年)的12月31日正好是星期天(即星期日)? 回答年份即可
代码语言:javascript复制package action;
import java.util.Calendar;
public class demo3 {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
for (int i = 1999; i < 10000; i = 100) {
calendar.set(Calendar.YEAR, i);
calendar.set(Calendar.MONTH, 11);
calendar.set(Calendar.DATE, 31);
if (calendar.get(Calendar.DAY_OF_WEEK) == 1) {
System.out.println(i);
break;
}
}
}
}
2、星辰大海
最新的火星探测机器人curiosity被困在了一个二维迷宫里,迷宫由一个个方格组成。 共有四种方格: ‘.’ 代表空地,curiosity可以穿过它 ‘#’ 代表障碍物,不可穿越,不可停留 ‘S’ 代表curiosity的起始位置 ‘T’ 代表curiosity的目的地 NASA将会发送一系列的命令给curiosity,格式如下:“LRUD”分别代表向左,向右,向上,向下走一步。由于地球和火星之间最近时也有55000000km!所以我们必须提前判断这一系列的指令会让curiosity最终处在什么样的状态,请编程完成它。
输入格式
第一行是一个整数T,代表有几个测试样例 每个测试样例第一行是一个整数N(1<=N<=50))代表迷宫的大小(N*N)。随后的N行每行由N个字符串组成,代表迷宫。接下来的一行是一个整数Q,代表有多少次询问,接下来的Q行每行是一个仅由“LRUD”四个字母的组成的字符串,字符转长度小于1000.
输出格式
对于每个询问输出单独的一行: “I get there!”:执行给出的命令后curiosity最终到达了终点。 “I have no idea!”:执行给出的命令后curiosity未能到达终点。 “I am dizzy!”:curiosity在执行命令的过程中撞到了障碍物。 “I am out!”:代表curiosity在执行命令的过程中走出了迷宫的边界。 输入示例:
代码语言:javascript复制2
2
S.
#T
2
RD
DR
3
S.#
.#.
.T#
3
RL
DDD
DDRR
输出示例:
代码语言:javascript复制I get there!
I am dizzy!
I have no idea!
I am out!
I get there!
我的这个写法动脑少一些,推荐用搜索的方式编写。
代码语言:javascript复制package action;
import java.util.Scanner;
public class demo3 {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
String[] arr = new String[999];
int scount = 0;
int a = sc.nextInt();
for (int i = 0; i < a; i ) {
int b = sc.nextInt();
char[][] bb = new char[b][b];
for (int j = 0; j < b; j ) {
bb[j] = sc.next().toCharArray();
}
int c = sc.nextInt();
String[] cc = new String[c];
for (int j = 0; j < cc.length; j ) {
cc[j] = sc.next();
}
char[][] ccc = new char[c][1000];
for (int j = 0; j < c; j ) {
for (int j2 = 0; j2 < cc[j].length(); j2 ) {
ccc[j][j2] = cc[j].charAt(j2);
}
}
for (int j = 0; j < c; j ) {
int h = 0;
int s = 0;
zb: for (int j2 = 0; j2 < 1000; j2 ) {
zc: for (int k = 0; k < b; k ) {
for (int k2 = 0; k2 < b; k2 ) {
if (j2 == 0 && bb[k][k2] == 'S') {
h = k2;
s = k;
break zc;
}
}
}
if (ccc[j][j2] >= 'A' & ccc[j][j2] <= 'Z') {
if (ccc[j][j2] == 'L') {
h--;
if (s < 0 | s == b | h < 0 | h == b) {
arr[scount ] = "走出了迷宫的边界!";
break zb;
} else if (bb[s][h] == '#') {
arr[scount ] = "执行命令的过程中撞到了障碍物导致眩晕!";
break zb;
} else if (bb[s][h] == 'T') {
arr[scount ] = "抵达终点!";
break zb;
}
} else if (ccc[j][j2] == 'R') {
h ;
if (s < 0 | s == b | h < 0 | h == b) {
arr[scount ] = "走出了迷宫的边界!";
break zb;
} else if (bb[s][h] == '#') {
arr[scount ] = "执行命令的过程中撞到了障碍物导致眩晕!";
break zb;
} else if (bb[s][h] == 'T') {
arr[scount ] = "抵达终点!";
break zb;
}
} else if (ccc[j][j2] == 'U') {
s--;
if (s < 0 | s == b | h < 0 | h == b) {
arr[scount ] = "走出了迷宫的边界!";
break zb;
} else if (bb[s][h] == '#') {
arr[scount ] = "执行命令的过程中撞到了障碍物导致眩晕!";
break zb;
} else if (bb[s][h] == 'T') {
arr[scount ] = "抵达终点!";
break zb;
}
} else if (ccc[j][j2] == 'D') {
s ;
if (s < 0 | s == b | h < 0 | h == b) {
arr[scount ] = "走出了迷宫的边界!";
break zb;
} else if (bb[s][h] == '#') {
arr[scount ] = "执行命令的过程中撞到了障碍物导致眩晕!";
break zb;
} else if (bb[s][h] == 'T') {
arr[scount ] = "抵达终点!";
break zb;
}
}
} else {
arr[scount ] = "老师付也不知道路了啊,游戏结束!";
break zb;
}
}
}
}
for (int i = 0; i < scount; i ) {
System.out.println(arr[i]);
}
}
}
写一个【2048】·强化处理边缘值(虽然不难,代码多,相当于6个题)
代码语言:javascript复制package action;
import java.io.IOException;
import java.util.*;
/**
* java控制台2048 2022年4月3日09:35:17
* 上W左A下S右D
*/
public class demo {
public static final int X = 4;
public static final int Y = 4;
public static int model[][] = new int[X][Y];
public static int step = 0;
public static boolean gameover = false;
public static int enumM[] = { 2, 2, 2, 2, 4, 4, 4, 8 };
public static void main(String[] args){
Random ra=new Random();
int randomX, randomY;
randomX = ra.nextInt(X);
randomY = ra.nextInt(model[randomX].length);
model[randomX][randomY] = 2;
randomX = ra.nextInt(X);
randomY = ra.nextInt(model[randomX].length);
model[randomX][randomY] = 2;
randomX = ra.nextInt(X);
randomY = ra.nextInt(model[randomX].length);
model[randomX][randomY] = 4;
randomX = ra.nextInt(X);
randomY = ra.nextInt(model[randomX].length);
model[randomX][randomY] = 2048;
outPrint();
while (!gameover) {
int read;
try {
read = System.in.read();
change(read);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void outPrint() {
for (int i = 0; i < X; i ) {
for (int j = 0; j < Y; j ) {
System.out.print("【");
if (model[i][j] == 0) {
System.out.print(" ");
}
if (model[i][j] > 0 && model[i][j] < 9) {
System.out.print(" " model[i][j] " ");
}
if (model[i][j] > 9 && model[i][j] < 100) {
System.out.print(" " model[i][j] " ");
}
if (model[i][j] > 99 && model[i][j] < 1000) {
System.out.print(" " model[i][j]);
}
if (model[i][j] > 999) {
System.out.print(model[i][j]);
}
System.out.print("】");
}
System.out.println();
}
}
public static void change(int dir) {
switch (dir) {
case 115:// S 下
int[] xp4 = new int[Y];
for (int i = 0; i < Y; i ) {
boolean goon = true;
while (goon) {
int[] temp = new int[X];
int tempIdex = X - 1;
for (int j = X - 1; j >= 0; j--) {
if (model[j][i] != 0) {
temp[tempIdex--] = model[j][i];
}
}
boolean hv = false;
for (int j = X - 1; j > 0; j--) {
if (temp[j] == temp[j - 1] && temp[j] != 0) {
temp[j] = temp[j] * 2;
temp[j - 1] = 0;
hv = true;
}
}
goon = hv;
int is0 = 0;
for (int j = X - 1; j >= 0; j--) {
model[j][i] = temp[j];
if (temp[j] == 0)
is0 ;
}
if (is0 > 0) {
xp4[i] = 1;// 可插牌
}
}
}
// 插牌
List<Integer> space4 = new ArrayList<Integer>();
for (int j = 0; j < xp4.length; j ) {
if (xp4[j] == 1) {
space4.add(j);
}
}
if (space4.size() == 0) {
gameover = true;
System.out.println("game over");
System.exit(0);
} else {
int a = (int) (Math.random() * (space4.size()));
Integer index = space4.get(a);
for (int j = X - 1; j >= 0; j--) {
if (model[j][index] == 0) {
model[j][index] = enumM[(int) (Math.random() * enumM.length)];
break;
}
}
}
outPrint();
break;
case 100:// D 右
int[] xp = new int[X];
for (int i = 0; i < X; i ) {
boolean goon = true;
while (goon) {
int[] temp = new int[Y];
int tempIdex = Y - 1;
// 去空
for (int j = Y - 1; j >= 0; j--) {
if (model[i][j] != 0) {
temp[tempIdex--] = model[i][j];
}
}
boolean hv = false;
// 合并
for (int j = 0; j < Y - 1; j ) {
if (temp[j] == temp[j 1] && temp[j] != 0) {
temp[j] = temp[j] * 2;
temp[j 1] = 0;
hv = true;
}
}
goon = hv;
int is0 = 0;
for (int j = 0; j < Y; j ) {
model[i][j] = temp[j];
if (temp[j] == 0)
is0 ;
}
if (is0 > 0) {
xp[i] = 1;// 可插牌
}
}
}
// 插牌
List<Integer> space = new ArrayList<Integer>();
for (int j = 0; j < xp.length; j ) {
if (xp[j] == 1) {
space.add(j);
}
}
if (space.size() == 0) {
gameover = true;
System.out.println("game over");
System.exit(0);
} else {
int a = (int) (Math.random() * (space.size()));
Integer index = space.get(a);
for (int j = Y - 1; j >= 0; j--) {
if (model[index][j] == 0) {
model[index][j] = enumM[(int) (Math.random() * enumM.length)];
break;
}
}
}
outPrint();
break;
case 119:// W 上
int[] xp3 = new int[Y];
for (int i = 0; i < Y; i ) {
boolean goon = true;
while (goon) {
int[] temp = new int[X];
int tempIdex = 0;
for (int j = 0; j < X; j ) {
if (model[j][i] != 0) {
temp[tempIdex ] = model[j][i];
}
}
boolean hv = false;
for (int j = 0; j < X - 1; j ) {
if (temp[j] == temp[j 1] && temp[j] != 0) {
temp[j] = temp[j] * 2;
temp[j 1] = 0;
hv = true;
}
}
goon = hv;
int is0 = 0;
for (int j = 0; j < X; j ) {
model[j][i] = temp[j];
if (temp[j] == 0)
is0 ;
}
if (is0 > 0) {
xp3[i] = 1;// 可插牌
}
}
}
// 插牌
List<Integer> space3 = new ArrayList<Integer>();
for (int j = 0; j < xp3.length; j ) {
if (xp3[j] == 1) {
space3.add(j);
}
}
if (space3.size() == 0) {
gameover = true;
System.out.println("game over");
System.exit(0);
} else {
int a = (int) (Math.random() * (space3.size()));
Integer index = space3.get(a);
for (int j = 0; j < X; j ) {
if (model[j][index] == 0) {
model[j][index] = enumM[(int) (Math.random() * enumM.length)];
break;
}
}
}
outPrint();
break;
case 97:// A 左
int[] xp2 = new int[X];
for (int i = 0; i < X; i ) {
boolean goon = true;
while (goon) {
int[] temp = new int[Y];
int tempIdex = 0;
for (int j = 0; j < Y; j ) {
if (model[i][j] != 0) {
temp[tempIdex ] = model[i][j];
}
}
boolean hv = false;
for (int j = 0; j < Y - 1; j ) {
if (temp[j] == temp[j 1] && temp[j] != 0) {
temp[j] = temp[j] * 2;
temp[j 1] = 0;
hv = true;
}
}
goon = hv;
int is0 = 0;
for (int j = 0; j < Y; j ) {
model[i][j] = temp[j];
if (temp[j] == 0)
is0 ;
}
if (is0 > 0) {
xp2[i] = 1;// 可插牌
}
}
}
// 插牌
List<Integer> space2 = new ArrayList<Integer>();
for (int j = 0; j < xp2.length; j ) {
if (xp2[j] == 1) {
space2.add(j);
}
}
if (space2.size() == 0) {
gameover = true;
System.out.println("game over");
System.exit(0);
} else {
int a = (int) (Math.random() * (space2.size()));
Integer index = space2.get(a);
for (int j = 0; j < Y; j ) {
if (model[index][j] == 0) {
model[index][j] = enumM[(int) (Math.random() * enumM.length)];
break;
}
}
}
outPrint();
break;
default:
break;
}
}
}
软件类个人线上比赛手册(C/C 、JAVA 和 Python)
一、赛前准备
1.硬件要求
(1)带摄像头的笔记本电脑或者台式机电脑(不包含苹果电脑)。电脑系统须是
WIN7/8/10 或以上版本。
(
2)手机和手机支架。手机安装腾讯会议 APP,并配备上网流量卡,保证手机有不低于
5 小时续航时间,提前备好充电设备。
2.软件要求
(
1)电脑须安装谷歌浏览器或 360 浏览器(考前务必进行浏览器测试)。
(
2)根据自己报考的比赛科目,安装相应软件环境(请到蓝桥杯大赛官网“学习资料”
菜单下“资料文档”里下载)。
C/C 开发环境:Dev-cpp 5.4.0、C/C API 帮助文档
Java 开发环境:JDK 1.8、Eclipse-java-2020-06、API 帮助文档
Python 开发环境:Python 3.8.6、IDLE(Python 自带编辑器)
(
3)RAR 解压缩软件用于解压试题(5.71 版本以上)。
(
4)PDF 阅读器用于看题(务必测试是否能打开试题)。
3.网络要求
(
1)电脑:普通宽带网络即可,建议 10Mbps 以上。
(
2)手机:单独配备上网 4G/5G 流量卡。(比赛期间手机可连接无线网络。如遇断网
情况,必须在 3 分钟内连接手机的上网流量卡继续比赛并进入腾讯会议)。
说明:如未按要求准备,影响比赛成绩的责任,由选手本人承担。
4.考场环境要求
比赛前 15 分钟,选手将用于云监考的手机放置到侧面对电脑屏幕及自己半身的位置(自
己侧后方约 130 度的位置,如下图),并用手机登录准考证提供的腾讯会议号,以“学校名
称 姓名”命名,打开视频,调整监控画面,将麦克风静音,同时保持听筒有声音,方便在比赛过程中及时接收监考员的提示信息。如因听筒关闭,导致无法接收监考员提示信息,将
会发送红牌警告,影响最终考试成绩,由选手自行承担。比赛全程如遇断网情况,须立即在
3 分钟内连接手机的上网流量卡保持比赛电脑网络在线,同时保持腾讯会议视频实时在线状
态。如腾讯会议因手机没电,网络问题等原因掉线,监考员会在考试系统中发消息提醒重新
登录,请选手在考试过程中及时查看系统消息。腾讯会议掉线次数超过 3 次,或持续掉线时
间一次超过 5 分钟,发送红牌警告,影响最终考试成绩,由选手自行承担。
5.比赛违规行为包含但不限于
(1) 选手携带与比赛内容相关的材料或者存储设备参加比赛。
(2) 比赛期间选手上网查阅资料,登录搜索引擎、BBS 论坛等网站、抄袭或者协助他人
抄袭。
(3) 比赛过程中使用有助于发送或者接收信息功能的电子设备。
(4) 选手由他人冒名代替参加比赛。
(5) 在比赛过程中未经云监考员同意,擅自离开座位。
(6) 比赛过程中选手故意遮挡或者关闭摄像头。
(7) 比赛过程中使用微信、QQ 等即时通讯软件。(8) 比赛过程不服从监考人员安排与要求。
(9) 比赛期间选手关闭考试浏览器。
(10) 监控画面未按照比赛要求设置。
6.比赛注意事项
(1) 比赛当天须在 9 点准时登录比赛系统,不得提前登录。
(2) 9 点开考后,30 分钟内未登录比赛系统和腾讯会议的选手视为弃考。
(3) 如选手比赛中遇断网超过十分钟则视为弃考,将由组委会结束其考试。
(4) 如去洗手间须在腾讯会议里用文字向云监考员报备同意,回来后须在腾讯会议里
用文字告知云监考员。
(5) 比赛过程中选手电脑和腾讯会议都必须全程联网,如果电脑断网需在 3 分钟内恢
复并向监考员报备。腾讯会议掉线次数超过 3 次,或持续掉线时间一次超过 5 分钟,发送红
牌警告,影响最终考试成绩,由选手自行承担。
注:考试期间设置红牌警告制度,确定 3 次违规即取消其比赛资格。
注意提前下载准考证。