1 条题解
-
0
这道题其实不难,是一道深搜题,和n的全排列(题目传送门)有关系而已,AC代码(AC代码及供参考,请勿抄袭!!!)。
具体思路就是把每一个数找出来然后跟(
int x;
)去比较,用(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
- 上传者