zoukankan      html  css  js  c++  java
  • 编写一个程序求解字谜游戏问题

    问题描述:输入是由一些字母和单词构成的二维数组,目标是找出字谜中的单词,这些单词可以是水平、垂直或沿对角线以任何方向放置。
    编写一个程序求解字谜游戏问题
    t h i s 找出 this、two、fat、that
    w a t s
    o a h g
    f g d t
    分析:方向有8种
    1从左到右 2从右到左
    3从上到下 4从下到上
    5从左上到右下 6从右下到左上
    7从左下到右上 8从右上到坐下
    已经头皮发麻
    /**
         * @description: 问题描述:输入是由一些字母和单词构成的二维数组,目标是找出字谜中的单词,这些单词可以是水平、垂直或沿对角线以任何方向放置。
         *   编写一个程序求解字谜游戏问题
         *   t h i s     找出 this、two、fat、that
         *   w a t s
         *   o a h g
         *   f g d t
             分析:方向有8种
                  1从左到右 2从右到左
                  3从上到下  4从下到上
                  5从左上到右下 6从右下到左上
                  7从左下到右上 8从右上到坐下
                已经头皮发麻
         * @return: void
         * @author: mufeng
         * @time: 2020/4/25 10:37
         */
        @Test
        public void test3(){
            String[] words={"this","two","fat","that","dgf"};
            char[][] two_dimensional_char={{'t','h','i','s'},{'w','a','t','s'},{'o','a','h','g'},{'f','g','d','t'}};
            findWords(two_dimensional_char,words);
        }
    
        private void findWords(char[][] two_dimensional_char, String[] words) {
            //1从左到右
            //2从右到左
            for(int x=0;x<two_dimensional_char.length;x++){
                StringBuilder lr=new StringBuilder();
                StringBuilder rl=new StringBuilder();
                //1从左到右
                for(int y=0;y<two_dimensional_char[x].length;y++){
                    lr.append(two_dimensional_char[x][y]);
                }
                //2从右到左
                for(int y=two_dimensional_char[x].length-1;y>=0;y--){
                    rl.append(two_dimensional_char[x][y]);
                }
                for(int i=0;i<words.length;i++){
                    //1从左到右
                    if(lr.toString().contains(words[i])){
                        System.out.print(words[i]);
                        int i1 = lr.toString().indexOf(words[i]);
                        for(int z=i1;z<words[i].length();z++){
                            System.out.print("["+x+","+z+"]");
                        }
                        System.out.println();
                    }
                    //2从右到左
                    if(rl.toString().contains(words[i])){
                        System.out.print(words[i]);
                        int i1 = rl.toString().indexOf(words[i]);
                        for(int z=rl.length()-1-i1;z>=0;z--){
                            System.out.print("["+x+","+z+"]");
                        }
                        System.out.println();
                    }
                }
            }
           //5从左上到右下 6从右下到左上(简单)
            //7从左下到右上 8从右上到坐下(简单)
            //3从上到下  4从下到上
            // 对角线翻转,打印需要旋转之前的
            tochar(two_dimensional_char);
        }
        public char[][] tochar(char[][] chars){
            char[][] toarr=new char[chars.length][chars.length];
            int k=0;
            for(char[] x:chars){
                for(int i=0;i<x.length;i++){
                    toarr[i][k]= chars[k][i];
                }
                k++;
            }
            return toarr;
        }

    代码还未写完,思路已经很明确

  • 相关阅读:
    CodeGen用户定义的扩展令牌
    CodeGen编写自定义表达式标记
    CodeGen CreateFile实用程序
    CodeGen融合核心关系循环扩展
    CodeGen融合核心扩展定制文件
    CodeGen API分析
    CodeGen字段循环Field Loop
    CodeGen概述
    算子扫描与递归核
    算子本质与数学函数
  • 原文地址:https://www.cnblogs.com/mufeng07/p/12776346.html
Copyright © 2011-2022 走看看