1 条题解

  • 0
    @ 2024-2-3 10:16:48
    #include <iostream>
    #include<bits/stdc++.h>
    using namespace std;
    int n,ans,k,g[12],flag[12],a[12];
    void dfs(int step){
        int i;
        for( i = 1 ; i <= n ; i++){
            if(abs(g[i] - a[step -1]) <= k && !flag[i]){
                flag[i] ++;
                a[step] = g[i];
                if(step == n && abs(a[step] - a[1]) <= k){
                    ans++;
                }
                else{
                	dfs(step+1);
            	}
                flag[i] --;
            }
        }
    }
    int main(){
        cin>>n>>k;
        int i;
        for(i=1;i<=n;i++){
            cin>>g[i];
        }
        if(n==1)
        ans=1;
        else{
            flag[1]++;
            a[1]=g[1];
            dfs(2);
        }
        cout << ans;
        return 0;
    }
    
    • 1

    信息

    ID
    3063
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    99
    已通过
    21
    上传者