【问题标题】:Structuring control flow - searching for a word in a grid结构化控制流 - 在网格中搜索单词
【发布时间】:2014-01-04 09:38:40
【问题描述】:

是的,这与我之前的几篇文章非常相似,但是虽然回复很有用,虽然我已经查看了这里提出的关于这个特定项目的其他问题,但我已经完全确定了我的方式我想怎么做。我不是故意固执,但由于花了很多时间思考如何实现我的特定算法,我发现很难放弃我的想法以这里建议的其他方式解决问题。只是在寻找有关如何实现它的建议,因为我不是一个出色的程序员,并且无法思考如何在我的代码中构造各种 if 和 for 语句。

就这样吧。给定一个 20x20 的字母网格和一个给定的单词,我想在其中找到这个单词。可以存在于任何方向。

我有一个最初为 1 的索引。

对于我想在网格中找到的单词,找到第一个字母的行和列位置,即单词(索引)。

增加索引。

在几种情况之间切换以在每个相邻的方块中找到第一个字母的每个位置的字母。决定这样做,就好像指南针一样。

            switch directions

            case 'N' 
            f_row = +1;
            f_col = 0;
            case 'NE' 
            f_row = -1; 
            f_col = +1; 
            case 'E' 
            f_row = 0; 
            f_col = +1; 
            case 'SE' 
            f_row = +1; 
            f_col = +1; 
            case 'S' 
            f_row = +1; 
            f_col = 0; 
            case 'SW' 
            f_row = +1; 
            f_col = -1; 
            case 'W' 
            f_row = 0; 
            f_col = -1; 
            case 'NW' 
            f_row = -1; 
            f_col = -1;
            end

</blink>

检查网格中每个位置中的这个字母是否等于现在应该是第二个字母的 word(index)。

如果是这样,再次朝那个方向移动,比较每个字母的单词长度,每次都增加单词索引。

如果字符不匹配,请尝试其他方向。

如果字母不存在,请尝试下一个出现在网格中的第一个单词。


我已经花费了好几个小时来尝试实现这一点,但运气不佳,并且不太擅长思考如何构建控制流。有什么想法吗?

【问题讨论】:

    标签: matlab for-loop octave control-flow


    【解决方案1】:
            switch directions
    
            case 'N' 
            f_row = +1;
            f_col = 0;
            case 'NE' 
            f_row = +1; % 
            f_col = +1; 
            case 'E' 
            f_row = 0; 
            f_col = +1; 
            case 'SE' 
            f_row = -1; %
            f_col = +1; 
            case 'S' 
            f_row = +1; 
            f_col = 0; 
            case 'SW' 
            f_row = -1; %
            f_col = -1; 
            case 'W' 
            f_row = 0; 
            f_col = -1; 
            case 'NW' 
            f_row = +1; %
            f_col = -1;
            end
    

    您的代码中有一些错误,数字与指南针方向不匹配。更新的行标有%

    【讨论】:

    • 哦,当然。干杯。只是快速写了下来,没有检查。开关是否必须放在 for 循环中?我不确定。
    猜你喜欢
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    相关资源
    最近更新 更多