• 【noip模拟赛4】Matrix67的派对 暴力dfs


    【noip模拟赛4】Matrix67的派对
     

    描述

     

    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的正整数

    输出

     

    输出符合要求的安排总数

    输入样例 1 

    4 10
    2
    16
    6
    10

    输出样例 1

    2

    做法:
    用dfs试每一条路,记录一个步数step,当step==n,切该点和起点差距小于k时,答案就累计一个。
    开3个数组:
    1 pre 记录 step-1 时,是哪个点,用来与step时的各个数比较判断能否做一起。
    2 flag 在试没一条路时,用flag标记每一条路,防止死循环,这条路探完后,重置为0。
    3 high 记录每个人的高。

    注意:有特解 当n=1时,ans 应为1。
    #include<iostream>
    #include<cmath>
    #include<stdio.h>
    #include<vector>
    #include<string.h>
    #include<math.h>
    #include<algorithm>
    using namespace std;
    const int maxn=11;
    int high[maxn],pre[maxn];
    int n,k,ans;
    bool flag[maxn];
    
    void dfs(int step)
    {
    
          for(int i=2;i<=n;i++)
          {
                if(!flag[i]&&abs(high[i]-high[pre[step-1]])<=k)
                {
                      flag[i]=1;
                      pre[step]=i;
                      if(step==n&&abs(high[pre[step]]-high[1])<=k)
                      {
                            ans++;
                      }
                      else
                            dfs(step+1);
                      flag[i]=0;
                }
          }
    }
    
    int main(void)
    {
        //  freopen("input.txt","r",stdin);
          cin>>n>>k;
          for(int i=1;i<=n;i++)
          {
                cin>>high[i];
          }
          if(n==1)
                ans=1;
          else
          {
                ans=0;
                flag[1]=1;
                pre[1]=1;
                dfs(2);
          }
          cout<<ans<<endl;
          return 0;
    }
  • 相关阅读:
    【Maven】安装配置、目录结构、配置文件、常见命令
    【Maven】基础概念、仓库、构建与部属
    【float】与【position】汇总
    【CSS】定义元素的对齐方式
    【CSS】元素样式
    【CSS】绝对定位和相对定位
    网页常见布局
    php--常用的时间处理函数
    16位cpu下主引导扇区及用户程序的编写
    浅谈pageobject模式
  • 原文地址:https://www.cnblogs.com/zgncbsylm/p/10579988.html
Copyright © 2020-2023  润新知