求解最小數字 暴力破解 外加 對字串的使用

2021-07-16 05:42:36 字數 1282 閱讀 4960

描述給出乙個正整數n,去掉其中任意m個數字後剩下的數字按原左右次序組成乙個新的正整數,要求設計一種方案使得到的數字最小。請程式設計輸出該最小數字。

輸入輸入檔案只有1行,包含兩個正整數n、m,中間以空格隔開。

輸出輸出檔案只有1行,為去掉m個數字後得出的最小數字

樣例輸入

1234 3

樣例輸出

1

剛看到本題題目時很容易想成只要將第一大,第二大...到第k大的數字刪除就可以得到最小值,但其實沒有這麼簡單。

比如給定數字:763198,刪除4個數字,得到的最小值應該為18,而不是刪掉9876後得到的31。

所以正確的做法應該是將輸入的數字看作乙個字串,再宣告另外的乙個字串(假設為s)存放所有可能的情況,並且宣告乙個字串(假設為minv)記錄當前求得的其代表數字最大值的字串。

然後對於元字串中的每乙個數字字元,考慮是否放進s,或不放進s。

當s中字串長度等於要求剩下的數字個數時,比較串s與串minv的大小,將小的記錄。

**如下:

//本題注意用字串做出來的要把前導的0刪掉,

//可以用stringstream來轉換為 long long 輸出,也可以直接輸出串minv

#include#include#include#include#includeusing namespace std;

stringstream ss;

char minv="99999999999999"; //存放最小字串

int m,n,len; //m為要刪掉的數字個數,len為輸入的字串的長度,n為最後結果長度

long long num;

void min(char s1 ,int i,char s,int j) //j是當前s中當前長度,當前考慮s1[i]字元

else }

int main()

{ char s1[1000],s[1000]; //s存放最終結果字串

cin>>s1>>m; //s1存放輸入數字串

len=strlen(s1);

n=len-m; //n為最後得到的結果長度

if(n==0)

cout<<0<>num;

cout<

1023 組個最小數 字串與數字拼接

給定數字 0 9 各若干個。你可以以任意順序排列這些數字,但必須全部使用。目標是使得最後得到的數盡可能小 注意 0 不能做首位 例如 給定兩個 0,兩個 1,三個 5,乙個 8,我們得到的最小的數就是 10015558。現給定數字,請編寫程式輸出能夠組成的最小的數。輸入格式 輸入在一行中給出 10 ...

jquery 格式化數字字串 小數字

用於頁面上格式化數字字串,此 為工作時所需,留作筆記,比較常用。author xg君 描述 格式化數字字串,格式化小數字 obj為需要格式的物件 例如 input標籤 maxlength 為最大小數字長度 minlength 為最小小數字長度 function tofloat id,maxlengt...

C double轉化成字串 保留小數字數

double temp 3.1415926 f fixed point string str1 temp.tostring f1 保留一位小數 四捨五入 結果 3.1 f fixed point string str2 temp.tostring f2 保留兩位小數,四捨五入 下面一次類推 結果 3...