算法 城市地图问题(深度优先遍历和广度优先遍历)

深度优先搜索和广度优先搜索

屏幕快照 2018-04-26 下午3.06.42.png
#pragma mark - - 地图问题 最短距离

#pragma mark - 深度优先搜索
// 深度优先
-(void)test1 {
    
    /*
     e[i][j] 表示i到j的距离 顶点i到顶点i的距离表示为0,
     顶点i无法到达顶点j表示为e[i][j]=0
     */
    
    int e[10][10];
    for (int i=0; i<10; i++) {
        for (int j=0; j<10; j++) {
            if (i==j) {
                e[i][j]=0;
            }else{
                e[i][j]=9999;
            }
        }
    }
    e[1][2] =2;
    e[1][5] =10;
    e[2][3] =3;
    e[2][5] =7;
    e[3][1] =4;
    e[3][4] =4;
    e[4][5] =5;
    e[5][3] =3;
    

    int book[10] ={0}; // 标示该点是否已经在路径中
    func1(1, 0, e, book);
    NSLog(@"最短距离为:%d",min);
    

    
}

int min = 10000;
void func1(int cur, int dis,int e[10][10],int book[]) {
    
    if(dis>min){
       return ; // 如果当前已经走过的路大于之前找到的最短路 就没有必要继续尝试下去;
    }
    
    // 判断是否到达目标城市
    if (cur==5) {
        if (dismin2) {
        return ; // 如果当前路径长度大于最小值,就没必要继续尝试下去啦
    }
    
    if (cur==5) {
        if (dismin3) {
            head ++;
        }
        
        if (cur==5) {
            if (dis
屏幕快照 2018-04-26 下午3.06.24.png
#pragma mark - -  最少转机 - 图的广度优先遍历

#pragma mark - 广度优先遍历
struct note2 {
    int x; // 顶点
    int f; // 当前节点是由哪个节点扩展出来的
    int s; //步数
};

-(void)test4 {
    int e[10][10];
    for (int i=0; i<10; i++) {
        for (int j=0; j<10; j++) {
            if (i==j) {
                e[i][j]=0;
            }else{
                e[i][j]=9999;
            }
        }
    }
    
    e[1][2] =1;
    e[2][1] =1;
    e[1][3] =1;
    e[3][1] =1;
    e[2][3] =1;
    e[3][2] =1;
    e[2][4] =1;
    e[4][2] =1;
    e[3][4] =1;
    e[4][3] =1;
    e[3][5] =1;
    e[5][3] =1;
    e[4][5] =1;
    e[5][4] =1;
    
    int book[10]={0};
    
    // 初始化 队列
    struct note2 que4[400];
    int head=1;
    int tail=1;
    
    
    // 入队
    que4[tail].x =1;
    que4[tail].f =0;
    que4[tail].s =0;
    tail ++;
    
    book[1] =1;
    
    int flag=0;
    while (headmin5) {
        return ;
    }
    
    if (cur== 5) {
        if (step

你可能感兴趣的:(算法 城市地图问题(深度优先遍历和广度优先遍历))