数据结构与算法分析——字谜问题实现

这篇博客详细解析了数据结构与算法分析中的字谜问题,提供了针对字典不大的解题思路和完整的Java代码实现。通过寻找字谜中不同方向的最长字符串并检查是否包含用户给定的单词,来确定字谜中是否存在这些单词。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构与算法分析 第一章课后习题答案第2题

 

一、问题描述:

 

二、解题思路:(针对的是字典不太大的情况)

1、单词表中的每个单词均可以用一个四元组(行,列,方向,长度)表示;

2、其中方向可分为四种:水平(包括向左、向右)、竖直(包括向上、向下)、右下(包括右下、左上)、左下(包括左下、右上);

3、找出每个方向上的最长字符串,以水平方向(向右)为例,最长字符串为:this,wats,oahg,fgdt;

4、如果3中的字符串包含或者等于用户提供的单词,则字谜中出现了该单词。

 

三、编程实现:

1、代码:

package exercise_1;

 

import java.util.ArrayList;

import java.util.HashSet;

import java.util.Scanner;

 

public class Exercise02 {

   introws=0; //数组的行数

   intcols=0;  //数组的列数

   chararr[][];//二维数组

   Stringwords[];//用户输入的词汇

  

   HashSet<String>strSet=new HashSet<String>();//用来存放字谜中出现的长串单词

   ArrayList<String>result=new ArrayList<String>();//存放字谜中匹配到的单词

  

   /**

    * 功能:得到用户输入的二维字母数组及一组单词

    */

   publicvoid input(){

      Scannersc=new Scanner(System.in);

     

      //数组的初始化

      System.out.println("Enterrows of the array:");

      rows=Integer.parseInt(sc.next());//获取数组的行数

      System.out.println("Entercols of the array:");

      cols=Integer.parseInt(sc.next());//获得数组的列数

      intlen=rows*cols;

      arr=newchar[rows][cols];

      System.out.println("Enter"+rows*cols+" chars,seperated

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值