人员分配问题(简单的深度优先搜索题目)

Posted martinlwx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了人员分配问题(简单的深度优先搜索题目)相关的知识,希望对你有一定的参考价值。

问题描述

某单位有若干人员,现执行某任务需要一定人数人员。编写程序,输入单位人数和每位员工名字,再输入执行任务所需人数,输出所有可能派出人员方案

程序代码
#include<bits/stdc++.h>
using namespace std;
char s[10][20];     //存放读进来的人的名字,暂定人最多为10个
char ans[10][20];   //存放每一次生成的结果
int maxMan = 0;     //存放执行任务所需人数
int times = 0;      //存放总方案数
int n;
void print(char s[][20])
{
    times++;
    cout<<"这是第"<<times<<"种方案"<<endl;
    for(int i=1;i<=maxMan;i++)
        cout<<ans[i]<<" ";
    cout<<endl;
}   //找到一个符合的答案后打印到控制台
void dfs(int depth,int index)
{
    if(index==(maxMan+1)) 
    {
        print(ans);
        return;
    }   //如果大于所需执行任务的人数则说明已经找到一个组合
    for(int i=depth;i<=n;i++)   //从depth开始时为了不会用到前面重复的元素
    {
        strcpy(ans[index],s[i]);
        dfs(i+1,index+1);   //递归搜索
    }
}   //深度优先搜索
int main()
{
    cout<<"请输入员工的人数:";
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cout<<"请输入第"<<i<<"个员工的姓名:";
        cin>>s[i];
    }   //读入所有人的名字
    cout<<"请输入执行任务所需人数:";
    cin>>maxMan;
    dfs(1,1);
    cout<<"共"<<times<<"种方案" <<endl;
    return 0;
}

以上是关于人员分配问题(简单的深度优先搜索题目)的主要内容,如果未能解决你的问题,请参考以下文章

通过迷宫问题简单学习DFS和BFS算法

通过迷宫问题简单学习DFS和BFS算法

通过迷宫问题简单学习DFS和BFS算法

搜索算法:深度优先搜索(DFS)

广度优先搜索的实际应用

深度优先搜索