还是贪心qwq
(这首曲子Xeuphoria的超好听
Noi open judge 3528
给定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0。n的位数为m。 现在从m位中删除k位(0<k < m),求生成的新整数最小为多少? 例如: n = 9128456, k = 2, 则生成的新整数最小为12456
输入第一行t, 表示有t组数据; 接下来t行,每一行表示一组测试数据,每组测试数据包含两个数字n, k。输出t行,每行一个数字,表示从n中删除k位后得到的最小整数。
感觉这道题更水了(捂脸)。
从前往后,如果前面的比后面的大的话,就把它删掉。。。
但是,还有一点。。那就是前导零(万恶
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n; char a[105]; int b; int main(){ scanf("%d",&n); for(int i=0;i<n;++i) { scanf("%s%d",a,&b); int l=strlen(a); while(b--) { for(int j=0;j<l;++j) { if(a[j]>a[j+1]) { for(int k=j;k<l;++k) { a[k]=a[k+1]; } break; } } l--; } while(a[0]=='0') { for(int y=0;y<l;++y) { a[y]=a[y+1]; } l--; } if(a[0]==0) { printf("0\n"); } else printf("%s\n",a); } return 0; }
想不出来还有没有什么其他神奇的方法。。
o(╯□╰)o