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