天天看点

数据结构与算法内容介绍

数据结构与算法内容介绍

  1. 先看几个经典的算法面试题

    字符串匹配问题:

    1. 有一个字符串 str1="程序员 程序员你程序 程序员你程序员你程序员你好",和一个子串 str2="程序员你程序员你"
    2. 现在要判断str1是否含有str2,如果存在,就返回第一次出现的位置,反之返回-1
    3. 要求用最快的速度来完成匹配,你的思路是什么?
      • 暴力匹配【简单,但是效率低】
      • KMP算法《部分匹配表》

        汉诺塔游戏:

        请完成汉诺塔游戏的代码,要求:

    4. 将A塔的所有圆盘移动到C塔。
    5. 在小圆盘上不能放大圆盘。
    6. 在三根柱子之间一次只能移动一个圆盘。

    八皇后问题

    八皇后问题,是一个古老而注明的问题,是回溯算法的经典案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。【92种】

    • 分治算法
    马踏棋盘算法
    1. 马踏棋盘算法也被称为骑士周游问题
    2. 将马随机放在国际象棋的8X8棋盘Board[0~7] [0~7]的某个方格中,马按走棋规则(马走日字)进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格
      • 会使用到图的深度优化遍历算法(DFS)+ 贪心算法优化