以下是我自己写的代码,这里我参照了别人的文章,看看我的代码究竟为什么会这么复杂
//最小新整数
//输入m位的整数和整数k,整数上的所有位均不为0,删除整数上k个数,求生成的最小整数
//这道题难度没有给定两个数,然后求它们组合成的最小数难(这道题可以看看我以前做的,已经发布了
//上次的题我使用的是插入排序,那么今天这道题我就使用冒泡排序
#include <stdio.h>
#include <stdlib.h>
void bubblesort(int a[],int len)
{
for(int j=1;j<len;j++)
{
for(int i=1;i<=len-j;i++)
{
int temp;
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
}
int main()
{
int n,i,i1,j,k,a[1000],temp,temp1,sum=0;/*一连串的全局变量,这样很不好,改进改进,有些该放在循环体内定义
的放在循环体内才对*/
scanf("%d",&n);
int b[n];
for(i=1;i<=n;i++)/*这里其实不必要用for循环,我们可以用n--,假如下面不使用n的话,这样就很方便简洁*/
{
sum=0;
scanf("%d %d",&j,&k);
temp=j;
temp1=0;
while(temp)
{
temp1++;
a[temp1]=temp%10;
temp=temp/10;
}
bubblesort(a,temp1);
for(i1=1;i1<=temp1-k;i1++)
{
sum=sum*10+a[i1];
}
b[i]=sum;
}
for(i=1;i<=n;i++)
printf("%d\n",b[i]);
return 0;
}/*总体来说还是方法不一样,他的覆盖的思想很好,是我没有想到的*/
以下是别人写的代码https://congfen214.blog.csdn.net/这是作者,大家可以看看别人的思路,比我好很多
/这是改进以后的算法
//这个算法我是从csdn上的这个人https://congfen214.blog.csdn.net/看到的,大家可以去看看
//不得不说,哪个是菜鸡,一目了然
#include <stdio.h>
#include <stdlib.h>
#include <string.h\>
int main()
{
int i,i1,n,k;
char a[10010];
scanf("%d",&n);
while(n--)
{
scanf("%s %d",a,&k);
int len;
len=strlen(a);
while(k--)
{
for(i=0;i<len-1;i++)
{
if(a[i]>a[i+1])
{
for(i1=i;i1<len-1;i1++)
a[i1]=a[i1+1];
}
}
len--;
}
for(i=0;i<=len-1;i++)
printf("%c",a[i]);
printf("\n");
}
return 0;
}