科大讯飞2018春招-笔试编程题
数蚊子
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
现在有一个蚊帐,假如用矩形体来表示一个蚊帐,为了方便描述,将该长方体的三个面放在X,Y,Z坐标面上。那么该矩形体的一个顶点就是(0,0,0),距离该顶点最远的顶点的坐标为 (x0,y0,z0)。给出(x0,y0,z0)和所有蚊子的坐标(xi,yi,zi),问一共有多少个蚊子在蚊帐内?在蚊帐上的蚊子算在蚊帐内。
输入
第一行一个整数n,表示蚊子的个数,1≤n≤100;
接下来一行3个整数x0,y0,z0,含义如题面,1≤x0,y0,z0≤1000。
接下来n行,每行3个整数,表示第i个蚊子的坐标,-10000≤xi,yi,zi≤10000。
输出
输出一个整数,表示在蚊帐内蚊子的个数。
样例输入
3
2 2 2
1 1 1
2 2 2
3 3 3
样例输出
2
***********************************************************************************************************************************************机器人
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
小A最近弄到了一个采用3D打印技术制作的机器人,正在训练机器人操作小物件。为展示机器人的能力,她使用了一小块正方形测试板。测试板是一个透明的塑料板,上面有NxN方块槽位,每个槽位上通过磁铁吸附着一个ASCII码字模。测试板可以沿中心点旋转90度,也可以沿四边翻转180度。
机器人可以模拟测试板的旋转或翻转操作。模拟过程为:机器人将测试板上的字模取下并放置到适当的位置,使得测试板呈现的模式和旋转或翻转后的结果一模一样。必要时,机器人可以旋转或翻转字模。模拟过程中,测试板保持不动。
假定测试板左上角的字模为“<”,则沿垂直方向翻转后呈现为“>”,再次沿中心向左旋转后,该字模重新回到左上角的位置,此时呈现为“^”的形状。
小A编写了一个程序,可以让机器人进行一系列的操作。为了检验程序的正确性,她需要事先知道机器人完成操作后测试板呈现的模式,你能帮她吗?
输入
假定测试板上的字模为如下具有对称性的字符“<”, “>”, “^”, “v”, “o”, “x”, “|”,“-”,“/”,“\”,则经过旋转或翻转后,字模保持不变或变为另一个对称字模。
测试数据有多组。每组测试数据的第一行为一个整数N(1=< N=<100),随后的N行为测试板的初始状态,每行中包括N个对称字符,每个字符对应于测试板上的字模。测试板上所有的槽位都是非空的。
接下来的一行为命令行,包含由若干命令字符构成的指令串。命令字符如下:
1)<:向左旋转90度;
2)-:沿水平方向翻转;
3)|:沿垂直方向翻转;
4)>:向右旋转90度;
5)\:沿对角线翻转;
6)/:沿反对角线翻转;
连续两个命令字符之间以单个空格分隔,机器人必须严格按照命令串中的命令顺序进行操作。命令串的长度大于0且不超过10^6。
输出
对每组测试样例,输出N行字符,为测试板的最终状态,输出格式和输入一样,但不需要输出测试板的大小(见样例)。
样例输入
3
o^-
/v|
vx^
< |
5
x>-o\
voooo
|ooo/
ooo/v
\o/vv
| \ |
样例输出
>-|
x<>
</o
<</o\
</ooo
/ooo|
oooo^
\o-<x
import java.util.*; public class KeDaXunFeiQ3 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); //因为是输入多组,必须使用s.hasNext();否则AC不能全部; while (scanner.hasNext()) { int n = Integer.parseInt(scanner.nextLine()); ; char[][] matrix=new char[n][n]; char[][] result=new char[n][n]; for (int i=0;i<n;i++) { String s = scanner.nextLine(); char[] chars = s.toCharArray(); matrix[i]=chars; System.out.println("Matrix is "+Arrays.toString(matrix[i])); } for (int i = 0; i < n; i++) { for (int j=0;j<n;j++) result[i][j]=matrix[i][j]; } String o = scanner.nextLine(); char[] order = o.toCharArray(); System.out.println("oder is "+Arrays.toString(order)); for (char x : order) { if (x=='<') { char[][] tempMatrix=new char[n][n]; for (int i = 0; i < n; i++) { for (int j=0;j<n;j++) tempMatrix[i][j]=result[i][j]; } for (int i=0;i<n;i++) { for (int j=0;j<n;j++) { result[i][j] = tempMatrix[j][n-1-i]; } } } else if (x=='-') { char[][] tempMatrix=new char[n][n]; for (int i = 0; i < n; i++) { for (int j=0;j<n;j++) tempMatrix[i][j]=result[i][j]; } for (int i=0;i<n;i++) { for (int j = 0; j < n; j++) { result[i][j] = tempMatrix[n-1-i][j]; } } } else if (x=='|') { char[][] tempMatrix=new char[n][n]; for (int i = 0; i < n; i++) { for (int j=0;j<n;j++) tempMatrix[i][j]=result[i][j]; } for (int i=0;i<n;i++) { for (int j = 0; j < n; j++) { result[i][j] = tempMatrix[i][n-1-j]; } } } else if (x=='>') { char[][] tempMatrix=new char[n][n]; for (int i = 0; i < n; i++) { for (int j=0;j<n;j++) tempMatrix[i][j]=result[i][j]; } for (int i=0;i<n;i++) { for (int j = 0; j < n; j++) { result[i][j] = tempMatrix[n-1-j][i]; } } } else if (x=='\\') { char[][] tempMatrix=new char[n][n]; for (int i = 0; i < n; i++) { for (int j=0;j<n;j++) tempMatrix[i][j]=result[i][j]; } for (int i=0;i<n;i++) { for (int j = 0; j < n; j++) { result[i][j] = tempMatrix[j][i]; } } } else if (x=='/') { char[][] tempMatrix=new char[n][n]; for (int i = 0; i < n; i++) { for (int j=0;j<n;j++) tempMatrix[i][j]=result[i][j]; } for (int i=0;i<n;i++) { for (int j = 0; j < n; j++) { result[i][j] = tempMatrix[n-1-j][n-1-i]; } } } } //print for(int i = 0 ; i < n ; i++) { for (int j = 0; j < n; j++) { System.out.print(result[i][j]); } System.out.print("\n"); } } } }
>-|
x<>