Delete Numbers
Delete Numbers
Time Limit: 1000MS | Memory Limit: 65535KB |
Submissions: 156 | Accepted: 21 |
Sample Input
178543 4
Sample Output
13
【分析】
如果是12000000123,要删除3位的话
应该删除前面的12和最后的3,输出12;
而不是删除2、2、3,输出10000001,错的;
这样看来就得用贪心了
从高位(即i=0)开始,
删除左边比右边大的数
# include<iostream> # include<cstring> using namespace std; char str[10000]; int main() { int k,len,i,j,c; cin>>str; cin>>k; len=strlen(str); for(i=0;i<k;i++) { for(j=0;j<len-1;j++) { if(str[j]>str[j+1]) { for(c=j;c<len-1;c++)//覆盖原来的数 str[c]=str[c+1]; break; } } len--;//这样即使升序也减了末尾数 } int flag=0; for(i=0,c=0;i<len;i++) { if(flag==0&&str[i]!='0') { cout<<str[i]; flag=1; } else if(flag) cout<<str[i]; } if(!flag)cout<<"0";//为0的情况 cout<<endl; return 0; }