IOS开发中使用OC编写递归算法的操作

来源:爱站网时间:2021-03-09编辑:网友分享
递归在程序开发中是常见的,而递归的结构最大的优点是清晰、简洁,为此爱站技术频道小编今天就为大家说说IOS开发中使用OC编写递归算法的操作,一起进入下文看看吧!

递归在程序开发中是常见的,而递归的结构最大的优点是清晰、简洁,为此爱站技术频道小编今天就为大家说说IOS开发中使用OC编写递归算法的操作,一起进入下文看看吧!

八皇后算法介绍

知道国际象棋的朋友们应该知道里面的皇后是最厉害的角色,她可以上下左右通吃,和中国象棋里面的车(ju 一声)一样,但是她比车更强大,她可以在斜线上也做到通吃,而我们的八皇后问题其实简单来说就是如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后

八皇后算法思路解析

既然任意一个皇后都无法吃掉其他的皇后,也就是说任两个皇后都不能处于同一条横行、纵行或斜线上,我们将棋盘当做一个二维数组,将皇后的位置标记为1 而其他位置默认都为0,这样我们就可以使用递归的方式将棋盘以打印的方式打印出来,问题也就解决了,下面我将以OC和C语言两种方式来实现,当然思路都是一样的,有些人可能不熟悉OC,所以这里也顺带提供一份C语言的

OC实现八皇后

/** 全局的二维数组(用于八皇后递归算法) */
@property(nonatomic,strong) NSMutableArray *eightQueens;

#pragma mark - 懒加载视图
#pragma mark -
- (NSMutableArray *)eightQueens {
  if (!_eightQueens) {
    _eightQueens = [NSMutableArray array];
    for (int i = 0; i = 0 && j>=0; i--,j--) {
    if ([self.eightQueens[i][j] integerValue] == 1) {
      //表示不能放皇后在这个位置
      return NO;
    }
  }

  //判断右上方
  for (int i = row - 1,j = col + 1; i >= 0 && j = 0 ; i++,j--) {
    if ([self.eightQueens[i][j] integerValue] == 1) {
      //表示不能放皇后在这个位置
      return NO;
    }
  }
  //表示这个位置可以放皇后了
  self.eightQueens[row][col] = @(1);
  return YES;
}

C语言实现八皇后

#pragma mark - C语言实现八皇后算法
#pragma mark -
const int QueensNumber = 8 ;//皇后数量
int queens[QueensNumber][QueensNumber] = {0};//初始化数组
static int QueensCount = 0;//记录解法数量

void printSolution() {
  printf("这是第%d种解法",QueensCount +1);
  printf("\n");
  for (int i = 0; i = 0 && j >= 0; i--,j--) {
    if (queens[i][j] == 1) {
      return false;
    }
  }

  //判断右上角
  for (int i = row - 1,j = col + 1; i >= 0 && j 

总结

以上就是IOS开发中使用OC编写递归算法的操作,在互联网经济飞速发展的今天,唯有不断思考才是进步的唯一方式,希望上述会对大家有一定的启发和帮助。

 

上一篇:IOS开发之实现按钮点击的切换功能

下一篇:如何在IOS上发展微信支付

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载