hdu6468 zyb的面试 (思维)
题意:
将1~n个数按字典序排序后,求第k个数
思路:
代码:
#include<stdio.h> #include<iostream> #include<algorithm> #include<string> #include<string.h> #include<math.h> #include<map> using namespace std; typedef long long ll; int ans; int n,k; bool flag; int cnt; void dfs(int x,int &cnt) {//cout<<x<<" "<<cnt<<endl; if(flag) return ; if(x>n||cnt>k) return ; if(cnt==k) { ans=x; flag=1; return ; } for(int i=10*x;i<10*(x+1);i++) { if(i>n) return ;//注意这里在hdu写成if(i<n)会超时 dfs(i,++cnt); } } int main() { int T; scanf("%d",&T); while(T--) { ans=0; scanf("%d %d",&n,&k); cnt=0; flag=0; for(int i=1;i<=9;i++) dfs(i,++cnt); printf("%d\n",ans); } return 0; }