ACM448

http://acm.nyist.net/JudgeOnline/problem.php?pid=448

分析:乍一看去还以为是一个实现排序,然后找出前几位的题。然而,并不是。需要用深度优先搜索实现....

最大数的规律:最高位一定在0~len-n之间,假设为k,那么次高位一定在k~len-n+1之间,依次类推...

深度优先搜索实现:

 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     int i,j,l,k;int t,n;
 6     char s[103],max; 
 7     scanf("%d",&t);
 8     while(t--)
 9     {
10         scanf("%s%d",s,&n);
11         l=strlen(s);
12         max='0';
13         for(i=l-n,k=0; i>0; i--)
14         {
15             for(j=k;j<=l-i;j++)
16                 if(s[j]>max)
17                 {
18                     max=s[j];
19                     k=j+1;
20                 }
21             printf("%c",max); 
22             max='0';
23         }
24         printf("\n");
25     }
26     return 0;
27 }
原文地址:https://www.cnblogs.com/xuxu8511/p/2453343.html