2014年去哪儿网笔试题--一个10*10的矩阵(可以理解为棋盘),随时生成一组数据填入矩阵,任何一个位置的数字除4进行计算,按余数着色...

一个10*10的矩阵(可以理解为棋盘),随时生成一组数据填入矩阵,任何一个位置的数字除4进行计算,按余数着色,余数为0着色为red,1为blue,2为green,3为black,可以理解为生成4中颜色的棋子放入棋盘,如果存在其中同色五星连珠的情况(规则通五子棋),找出任意一组,输出5个棋子的位置下标值。

只是用最笨的方法实现一下:

public class FiveColor {

    public void test(){
        int a[][]=new int[10][10];
        for(int i=0;i<10;i++)
            for(int j=0;j<10;j++)
                a[i][j]=(int)((Math.random())*4);
        System.out.println("初始化填充数组:");
        for(int i=0;i<10;i++)
        {
            for(int j=0;j<10;j++)
                System.out.print(a[i][j]+" ");
            System.out.print("\n");
        }
        for(int i=0;i<10;i++)
            for(int j=0;j<10;j++){
                if(j+4<10&&a[i][j]==a[i][j+1]&&a[i][j]==a[i][j+2]&&a[i][j]==a[i][j+3]&&a[i][j]==a[i][j+4])
                {
                    System.out.println("横向五子:");
                    System.out.print("["+i+"]["+j+"]  ");
                    System.out.print("["+i+"]["+(j+1)+"]  ");
                    System.out.print("["+i+"]["+(j+2)+"]  ");
                    System.out.print("["+i+"]["+(j+3)+"]  ");
                    System.out.print("["+i+"]["+(j+4)+"]  \n");
                }
               if(i+4<10&&a[i][j]==a[i+1][j]&&a[i][j]==a[i+2][j]&&a[i][j]==a[i+3][j]&&a[i+4][j]==a[i][j])
                {
                    System.out.println("纵向五子:");
                    System.out.print("["+i+"]["+j+"]  ");
                    System.out.print("["+(i+1)+"]["+j+"]  ");
                    System.out.print("["+(i+2)+"]["+j+"]  ");
                    System.out.print("["+(i+3)+"]["+j+"]  ");
                    System.out.print("["+(i+4)+"]["+j+"]  \n");
                }
               if(i-4>-1&&j+4<10&&a[i][j]==a[i-1][j+1]&&a[i][j]==a[i-2][j+2]&&a[i][j]==a[i-3][j+3]&&a[i-4][j+4]==a[i][j])
               {
                   System.out.println("正斜五子:");
                   System.out.print("["+i+"]["+j+"]  ");
                   System.out.print("["+(i-1)+"]["+(j+1)+"]  ");
                   System.out.print("["+(i-2)+"]["+(j+2)+"]  ");
                   System.out.print("["+(i-3)+"]["+(j+3)+"]  ");
                   System.out.print("["+(i-4)+"]["+(j+4)+"]  \n");
               }
               if(i+4<10&&j+4<10&&a[i][j]==a[i+1][j+1]&&a[i][j]==a[i+2][j+2]&&a[i][j]==a[i+3][j+3]&&a[i+4][j+4]==a[i][j])
               {
                   System.out.println("反斜五子:");
                   System.out.print("["+i+"]["+j+"]  ");
                   System.out.print("["+(i+1)+"]["+(j+1)+"]  ");
                   System.out.print("["+(i+2)+"]["+(j+2)+"]  ");
                   System.out.print("["+(i+3)+"]["+(j+3)+"]  ");
                   System.out.print("["+(i+4)+"]["+(j+4)+"]  \n");
               }

            }

    }

    public static void main(String[] args)
    {
        FiveColor fc=new FiveColor();
        fc.test();

    }

}
时间: 2024-10-18 11:45:03

2014年去哪儿网笔试题--一个10*10的矩阵(可以理解为棋盘),随时生成一组数据填入矩阵,任何一个位置的数字除4进行计算,按余数着色...的相关文章

2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小。

2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小. 我的大致思路是把这个整型数组转换成String数组,然后通过String类的compareTo方法对这个数组进行第一次排序,排序得到的结果恰好是按字典序排序,而字典序又恰好是数字从0-9的顺序,恰好符合这个要求.最后进行检验下,有的可能需要调换下顺序使得数最小. package com.cn.qunar.test; /** * @author 刘利娟 [email protected] * @

2014年去哪儿网笔试题--有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来。

有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来. 这两个文件内容如下: context.txt “并不是每个人都需要$(qunar)自己的粮食,$(flight.1)每个人都需要做自己穿的$(flight.2),我们说着别人发明的$(hotel),使用别人发明的数学......我们一直在$(tuan)别人的成果.使用人类的已有经验和知识$(travel.1)来进行,是一件$(travel.2)的事情” word.conf flight=也不是:衣

2016去哪网笔试题二

第二道题目的题意大概是给定三个无序数组A,B,C:这三个数组中各自的数字没有重复,但是可能存在同时在三个数组中的数字. 如果有请按从小到大的顺序输出,如果没有不输出. 1 #include <iostream> 2 #include <vector> 3 #include <stdio.h> 4 #include <stdlib.h> 5 //#include <cstdio.h> 6 #include <string> 7 #inc

2016去哪网笔试题一

自己写的代码,供大家参考一下 #include <iostream> #include <vector> #include <stdio.h> #include <stdlib.h> //#include <cstdio.h> #include <string> #include <map> using namespace std; struct kenerl { int major; int mirror; int le

去哪儿2015笔试题:寻找字符串的差异

去哪儿的一道笔试题. 给定两个字符串a,b:找出两个字符串中不一样的字符串.如存在于a而不存在于b,则将该字符输出,同时.加一个"-"标记:若存在于b而不存在于a,则输出该字符,同时以"+"标记.若是同时存在于a.b中,则不输出.假设字符串是由字母组成. 如: a="abc",b="aabcbc",则输出为"+a,+b,+c": a="abcde",b="bcdef"

第一车网笔试题

笔试: 1.echo count('abc')输出什么? 2.用PHP写出显示客户端IP和服务器端IP地址的代码? 3.运行以下程序,输出什么? <?php $a = 'hello'; $b = &$a; unset($b); $b = 'world'; echo 'what is' . $a; 4.mysql数据库,假设每天有一万条以上数据的增量,该怎么优化? 5.打开php.ini中的safe_mode,会影响哪些函数? 6.写一个函数,尽可能高效地,从一个标准url里取出文件的扩展名?

2014年腾讯实习生笔试题解析

本答案是我自己搜索资料解答出来,假设不正确敬请指出 1. 使用深度优先算法遍历下图.遍历的顺序为(C) A ABCDEFG B ABDCFEG C ABDECFG D ABCDFEG 解析: 深度优先遍历相似于树的前序遍历,其基本思想为: (1).訪问顶点v; (2).从v的未被訪问的邻接点中选取一个顶点w,从w出发进行深度优先遍历. (3).反复以上两步: 选C 2. 输入序列ABCABC经过栈操作变成ABCCBA,以下哪些是可能的栈操作( AD) A. push pop push pop p

2014年网易互联网在线笔试题一道

题目:有四个文件,每个文件中存有100万个int型整数,内存限制1M,该如何最优地得到四个文件的交集数,也就是在四个文件都出现的数的个数? 我的想法:因为内存限制1M,也就是1024*1024个字节,小于一个文件中所有数所占的存储100 0000*4,所以文件中的数没办法一次装到内存.采用外部排序.归并等方法实现. 具体: 1.最开始应该是对每个大文件进行外部排序,也就是n次从大文件中取出一部分数在内存中进行快速排序或堆排序,然后将结果存入小文件中,存入小文件的同时去重: 2.然后对n个小文件进

去哪儿2015笔试题JAVA实现

第一题代码: 分析:将字符数组中的每个字符串,找出其中最长的那个与字符数组中长度进行比较: a.当最长的字符串的长度大于等于字符数组的长度时,直接输出 b.当最长的字符串的长度小于字符数组的长度时,找出该长度下整数值最大的那个字符串,在前面部0输出 package com.njupt; public class Heia { public String MaxLength(String[] string){ int max=Integer.valueOf(string[0]); int inde