資源簡介
問題描述:
給定n位正整數(shù)a,去掉其中任意k個數(shù)字后,剩下的數(shù)字按原次序排列成一個新的正整數(shù)。
算法設(shè)計:
給定n (1<=n<=200)位的正整數(shù)a和k,此時,k小于n。
試著設(shè)計一個算法,找出刪去k個數(shù),剩下數(shù)字組成的新數(shù)最小的刪數(shù)方案。
輸入格式
可輸入多組測試數(shù)據(jù)(不超過50組測試數(shù)據(jù)),每組測試數(shù)據(jù)分兩行,每行一個數(shù),數(shù)的含義如下。
第一行:正整數(shù)a(a是大于0的一個n位正整數(shù))
第二行:正整數(shù)k
以0來結(jié)束測試數(shù)據(jù)。
輸出格式
輸出每組測試數(shù)據(jù)所得出的刪k位數(shù)之后的最小數(shù)。
若輸出的數(shù)首位是0,無須理會,0也直接輸出即可。例如:024,就直接輸出0
代碼片段和文件信息
#include
#include
int?main()
{
????char?a[200]={0}b[200][200];//a作為臨時數(shù)組儲存輸入的字符串
????int?i=0temp;
int?n=1m;
int?k;
????int?yx=0;
scanf(“%s“&a);
while(a[0]?!=?‘0‘)
{
i=strlen(a);//求出數(shù)組的實際長度
scanf(“%d“&k);//輸入要刪掉的位數(shù)
b[x][0]?=?i-k;
for(y=1;y<=i;y++)//把數(shù)組的順序倒過來
{
b[x][y]?=?a[y-1];
}
while(k!=0)//找出其中比前一個數(shù)大同時也比后一個數(shù)大的數(shù),并刪除
{
for(n=1;n {
if(b[x][n]?>?b[x][n+1])
{
if(n==1)
評論
共有 條評論