zoukankan      html  css  js  c++  java
  • 身高安排方法(基础dfs)

    身高安排方法(基础dfs)

     P1085

    时间限制: 0 Sec  内存限制: 128 MB
    提交: 64  解决: 44
    [提交][状态][讨论版][命题人:外部导入]

    题目描述

    Matrix67发现身高接近的人似乎更合得来。Matrix67举办的派对共有N(1< =N< =10)个人参加,Matrix67需要把他们安排在圆桌上。Matrix67的安排原则是,圆桌上任意两个相邻人的身高之差不能超过K。请告诉Matrix67他共有多少种安排方法。

    输入

            第一行输入两个用空格隔开的数N和K,其中1< =N< =10,1< =K< =1  000  000。         第二行到第N+1行每行输入一个人的身高值。所有人的身高都是不超过1  000  000的正整数

    输出

            输出符合要求的安排总数

    样例输入

    4 10
    2
    16
    6
    10
    

    样例输出

    2
    

    提示

    #include<iostream>
    #include<cmath>
    #include<cstring>
    #include<string>
    using namespace std;
    int n;
    int k;
    int h[15];
    int v[15];
    int a[15];
    int ans=0;
    void dfs(int step){
        for(int i=2;i<=n;i++){
            if(!v[i]&&abs(h[i]-a[step-1])<=k)
            {
                v[i]++;
                a[step]=h[i];
                if(step == n && abs(a[step] - a[1]) <= k)
                {
                        ans++;
                }
                    else
                    dfs(step+1);
                    v[i] --;
                }
            }
        return;
    }
     
     
    int main()
    {
        cin>>n>>k;
        for(int i=1;i<=n;i++)
        {
            cin>>h[i];
            v[i]=0;
        }
        if(n==1)
            cout<<1;
        else{
            v[1]++;
            a[1]=h[1];
            dfs(2);
            cout<<ans;
        }
             
     
        return 0;
    }
  • 相关阅读:
    c++链表实现学生成绩管理系统(简易版)
    IOS动画讲解
    栈的实现
    Masonry的使用
    二叉树详解-2
    二叉树详解-1
    CoreData的使用-2
    NSPredicate 详解
    CoreData的使用-1
    IOS常用手势用法
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/13270822.html
Copyright © 2011-2022 走看看