码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-07-22 14:14:19      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:include   答案   组合   打印   描述   end   编写   print   题目   

问题描述

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

程序代码
#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;
}

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

标签:include   答案   组合   打印   描述   end   编写   print   题目   

原文地址:https://www.cnblogs.com/MartinLwx/p/9349742.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!