一、单选
1.
正确答案:D
2.
正确答案:B
3.
正确答案:D
4.
正确答案:C
5.
正确答案:C
6.
正确答案:C
7.
正确答案:B
二、不定项选择
1.
正确答案:A,B,C
2.
正确答案:C,D
3.
正确答案:A,B,D
三、编程
1. 把字符串转换成整数
解法:
1、把字符串转换为字符数组
2、上次计算的结果*10,相当于10进制进位,然后加当前位的值
注意:
- 空字符串
- 正负号处理
- 数字串中存在非法字符
代码:
public class Solution {
public int StrToInt(String str) {
if(str.isEmpty()) {
return 0;
}
char[] ch = str.toCharArray();
int flg = 1;
if(ch[0] == '+') {
flg = 1;
ch[0] = '0';
}
if(ch[0] == '-') {
flg = -1;
ch[0] = '0';
}
int sum = 0;
for(int i = 0; i < ch.length; i++) {
if(ch[i] < '0' || ch[i] > '9') {
sum = 0;
break;
}
sum = sum*10 + ch[i] - '0';
}
return flg*sum;
}
}
2. 不要二
解法:
这道题虽然题干很长,但是仔细读题之后,没有那么难
首先我们要先看欧几里得公式是什么
化简之后: ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) == 4
所以(x1,y1)的右边两个位置 和 下边的两个位置不能放蛋糕
因此:
假设放蛋糕的位置是(x1,y1),则不能放蛋糕的位置(x2,y2)
满足x 1== x2,y1-y2 == 2 或者 x1-x2 == 2,y1 == y2
定义一个二维数组,arr开空间并初始化
每个位置初始化为 0,表示当蛋糕a[i][j] 位置放蛋糕,
则可以标记 a[i][j+2]和a[i+1][j]位置不能放蛋糕
遍历一遍二维数组,标记出不能放蛋糕的位置
统计也就统计出了当蛋糕的位置数。
代码:
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int W = in.nextInt();//长
int H = in.nextInt();//宽
int[][] arr = new int[W][H];
int count = 0;
for(int i = 0; i < W; i++) {
for(int j = 0; j < H; j++) {
if(arr[i][j] == 0) {
count++;
if(i+2 < W) {
arr[i+2][j] = 1;
}
if(j+2 < H) {
arr[i][j+2] = 1;
}
}
}
}
System.out.println(count);
}
}