搜索

深度优先遍历查找


发布时间: 2022-11-25 02:41:00    浏览次数:43 次

一.题目

二.思路

深度优先遍历+回溯法

三.代码

#include<stdio.h>
#include<malloc.h>
int n, m;
int* path;
int count[2];//0代表-,1代表o
int key;//第k个
int count_ = 0;

void init() {
    printf("请输入n,m,k:");
    scanf("%d %d %d", &n, &m, &key);
    path = (int*)malloc(sizeof(int) * (n + m));
    count[0] = n;
    count[1] = m;
}

void search(int depth) {
    if (depth == n + m) {
        count_++;
        if (count_ == key) {
            for (int i = 0; i < n + m; i++) {
                if (path[i] == 0)
                    printf("-");
                else
                    printf("o");
            }
            printf("\n");
            return;
        }
    }
    for (int i = 0; i < 2; i++) {
        if (!count[i])
            continue;
        count[i]--;
        path[depth] = i;
        search(depth + 1); 
        count[i]++;
    }
}

int main() {
    init();
    search(0);
    return 0;
}

四.总结

1.全排列的变种题。

2.图的基本运用。

3.目前我还没有更好的做法。

4.递归图

免责声明 深度优先遍历查找,资源类别:文本, 浏览次数:43 次, 文件大小:-- , 由本站蜘蛛搜索收录2022-11-25 02:41:00。此页面由程序自动采集,只作交流和学习使用,本站不储存任何资源文件,如有侵权内容请联系我们举报删除, 感谢您对本站的支持。 原文链接:https://www.cnblogs.com/cony1/p/16916710.html