1 条题解

  • 0
    @ 2024-6-24 19:54:17

    这道题其实不难,是一道深搜题,和n的全排列(题目传送门)有亿点点亿点点关系而已,AC代码(AC代码及供参考,请勿抄袭!!!)。

    具体思路就是把每一个数找出来然后跟x x (int x;)去比较,用num num (int num;)去记录,每比出一个,就num++,最后cout<<num;就行了。

    AC代码:

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    int n,x;
    int num; 
    int a[13];
    bool vis[13];
    void dfs(int m){
    	if(m==n+1){
    		int sum=0;
    		for(int i=1;i<=n;i++) sum=sum*10+a[i];
    		if(sum<x) num++;
    		return;
    	}
    	for(int i=1;i<=n;i++){
    		if(!vis[i]){
    			a[m]=i;
    			vis[i]=1;
    			dfs(m+1);
    			vis[i]=0;
    		}
    	}
    }
    int main(){
    	cin>>n>>x;
    	dfs(1);
    	cout<<num;
    	return 0;
    }
    
    • 1

    信息

    ID
    183
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    3
    已通过
    2
    上传者