刪數(shù)問題
問題描述:給定n位正整數(shù)a坷随,去掉其中任意k<=n個數(shù)字后,剩下的數(shù)字按原次序排列組成一個新的正整數(shù)驻龟,對于給定的n位正整數(shù)a和正整數(shù)k温眉,設(shè)計一個算法找出剩下數(shù)字組成的新數(shù)最小的刪數(shù)方案。
算法思想:用貪心算法解決翁狐,將n 位正整數(shù)看作字符串类溢,當(dāng)k(刪數(shù)的大小)不為0時:遍歷字符串露懒,從第一個開始與它的下一個比較闯冷,如果大于下一個欣尼,就刪除它版姑,(即更新字符串),同時讓k減一唇兑,進行下一輪刪數(shù)坎弯。
代碼:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
????char s[100];
????scanf("%s",&s);
????int i,j,n;
????scanf("%d",&n);
????while(n)
????{
????????for( i=0;i<strlen(s);i++)
????????{
????????????????if(s[i]>=s[i+1])
????????????????{
????????????????????????for( j=i;j<strlen(s);j++)
???????????????????????{
??????????????????????????????s[j]=s[j+1];
? ? ? ? ? ? ? ? ? ? ? ? ?}
????????????????n--;
????????????????break;
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
????}
//打印刪數(shù)完后的字符串
for(i=0;i<strlen(s)-n;i++)
????{
????????????printf("%c",s[i]);
????}
}
運行截圖: