2013-12-16 31 views
0

是的,这是我之前几篇文章的重复,但尽管我的回答很有用,尽管我已经看过其他关于这个问题的问题项目,我很喜欢我如何去做这件事。我并不是刻意固执,但是由于花了很多时间思考如何实现我的特定算法,我发现很难放弃我的想法来以其他方式解决问题。只是寻求如何实现它的建议,因为我不是一个伟大的程序员,并且不能思考如何构建我的代码中的各种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> 

检查这个信在每个网格中的这些位置的是否等于字(索引),其现在应该第二个字母。

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

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

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


我已经花了几个小时试图现在得到这个权利有一点运气,我不以思考如何构建控制流非常好。有什么想法吗?

回答

0
 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 

您的代码中存在一些错误,数字与罗盘方向不匹配。更新的行标有%

+0

哦,当然。干杯。只是很快就写出来,没有检查。交换机是否必须放在for循环中?我不确定。 – user3058703