-
思路: 每一步总是选择一个使剩下的数最小的数字删除,即按高位到低位的顺序搜索,若各位数字递增,则删除最后一个数字;否则删除第一个递减区间的首字符,这样删一位便形成了一个新的数字串。然后回到串首,按上述规则再删除下一个数字
-
代码:
#include<stdio.h> #include<string.h> #define N 100 int main() { char a[N],temp[N]; int i,j,n,k,num=0; memset(a,'\0',sizeof(a)); memset(temp,'\0',sizeof(temp)); printf("请输入正整数:\n"); scanf("%s",a); n=strlen(a); printf("请输入要删除的位数:\n"); scanf("%d",&k); if(k<=n) { while(num<k) { for(i=0;i<n-num;i++) //找出递减区间的首个数字 { if(a[i]>a[i+1]) { j=i+1; break; } else { temp[i]=a[i]; } } for(;j<n-num;j++) //删除找出的那个数字 { temp[i++]=a[j]; } num++; //统计删减数字个数 memset(a,'\0',sizeof(a)); strcpy(a,temp); memset(temp,'\0',sizeof(temp)); } printf("最后得到的最小数为:\n%s\n",a); } return 0; }
删数问题(C语言实现)
最新推荐文章于 2024-07-30 10:31:18 发布