科大讯飞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

相关推荐

#25届机械人秋招该做哪些准备?#写大论文写的有些累了,刚好看到了有这个新的话题,就应邀请写一些内容。现在其实还挺早的,我就从实习开始写吧。(1)暑期实习,暑期实习如果三月份有空的话,其实已经可以开始边看一看了,前几天我看到华子已经发了实习通知了,如果有得选的话,最好还是学校附近的大厂,这样离得近,然后实习经历也有说服力,如果学校和大厂不可兼得,那就看个人时间了,如果时间够,我觉得还是大厂重要些,因为对于985的同学来说,学历本身也算是一种经历,如果只能去小厂的话我觉得不如到学校多做做项目。(2)小论文,按照时间结点的话,最好也是在研二下半年先把论文发出去,最好是在暑假前,这样不会实习的时候还要写小论文、改小论文(说的就是我了),七八月份的时候边实习、边干学校老师的项目、边写小论文,时间还是很紧张的。(3)导师的项目,这个就见仁见智了,我反正老师让我干的活儿,我都老老实实的在做,后果就是能者多劳,这会儿还没写好我的大论文。(4)具体到秋招,具体到秋招的话,找实习的时候的简历,其实就是在为秋招的简历做准备了,简历修改的话,可以自己先写,再找chatGPT润色一下,最后再找找师兄师姐或者其他有经验的长辈看一看,关键的话就还是“有数据、有量化”,这样别人才知道你做了什么工作,对于机械佬来说这应该是很重要的。(5)别的就都还好了,打铁还需自身硬,努力提高自己,秋招肯定会有好的收获的。然后如果有靠谱的内推,可以找一找,这里具体指是认识的同学或师兄师姐的内推。大致就是这些,继续写小论文。(后续如果工作顺利,也欢迎大家找我内推,哈哈哈)
点赞 评论 收藏
转发
点赞 33 评论
分享
牛客网
牛客企业服务