科大讯飞2018春招-笔试编程题

让选Java或C++,30道不定项选择,考得挺基础的。

三道编程,
第一道送分。
第二道:
***********************************************************************************************************************************************

数蚊子

时间限制: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

***********************************************************************************************************************************************
应该是送分题,不知道为什么,我只能AC 80%
判断条件是(x>=0 && x<=a && y>=0 && y<=b && z>=0 && z<=c), a,b,c为矩形长宽高。

第三道:
***********************************************************************************************************************************************

机器人

时间限制: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<>

</o
************
下面是我的输出
**********
^|-
xv^
v/o


全部评论
春招还是实习?
点赞 回复
分享
发布于 2018-04-15 01:44
实习吗?我都不知道有笔试了
点赞 回复
分享
发布于 2018-04-15 01:50
百信银行
校招火热招聘中
官网直投
实习还没笔试哎
点赞 回复
分享
发布于 2018-04-15 08:17
第二个坐标为负值的情况你是不是忘记考虑了,另外第三个也是写了一个多小时最后一点都没通过
点赞 回复
分享
发布于 2018-04-15 14:12

相关推荐

点赞 33 评论
分享
牛客网
牛客企业服务