问题描述:删除一段数中的n个数字,使得剩下数组成的数,值最小算法思想:遇到一个递增的子序列,则删除最后的一个数字,若为递减的子序列则不断地覆盖第一个数字。代码 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int n, a, i, k; char s[200]; while(scanf("%s %d", s, &n) != EOF) { for(k = 1; k <= n; k++) { a = strlen(s); i = 0; while(i < a && s[i] <= s[i + 1])//字符串的最后一个是结束标志 它的Ascall 码值为 0 { i++; } while(i < a) { s[i] = s[i + 1];// 若为升序,则将 最后一个 的Ascall 吗(结束符)赋给 前面 所以 a字符串的 长度减一 i++; //若为降序 则覆盖前面的数值 } } a = strlen(s); i = 0; while(i < a - 1 && s[i] == '0') i++; for(; i < a; i++) { printf("%c", s[i]); } printf("\n"); } return 0; }