b001 刪數問題

2021-07-08 12:45:42 字數 1017 閱讀 3688

內容:

鍵盤輸入乙個高精度的正整數n(≤240位),去掉其中任意s個數字後剩下的數字按原左右次序將組成乙個新的正整數。程式設計對給定的n和s,尋找一種方案,使得剩下的數字組成的新數最小。

輸入說明:ns

輸出說明:

最後剩下的最小數

輸入樣例:

4  輸出樣例 :

這道題的思路是:一開始判斷前s+1位數字,找到其中的最小值,因為如果位數都相同的話,最高位最小則數最小,刪除第乙個出現的最小值前面的所有數(假設有s1個)。接下來的任務就是在剩下的陣列中刪除s-s1個數,使得剩下的子陣列滿足題意,so,遞迴。

/**

* 一開始判斷前s+1位數字,找到其中的最小值,

* 因為如果位數都相同的話,最高位最小則數最小,

* 刪除第乙個出現的最小值前面的所有數(假設有s1個)。

* 接下來的任務就是在剩下的陣列中刪除s-s1個數,使得剩下的子陣列滿足題意,so,遞迴。

*/#include #include using namespace std;

void deletenum(int* arr, int beg, int s, int n);

int main()

cin >> s;

deletenum(arr, 0, s, n);

// zero是用來判斷一開始的0不輸出的

int zero = 0, num = 0;

for (int i = 0; num != n - s; ++i)

zero = 1;

cout << arr[i];

++num;

} return 0;

}void deletenum(int* arr, int beg, int s, int n)

} // 刪除第乙個最小值前的元素

while (arr[beg] != min)

// 尾遞迴

deletenum(arr, beg + 1, s, n);

}

刪數問題(貪心)

time limit 1000ms memory limit 65536k 有疑問?點這裡 給定n 位 n 100 正整數a,去掉其中任意k n 個數字後,剩下的數字按原次序排列組成乙個新的正整數。對於給定的n 位正整數a和正整數k,設計乙個演算法找出剩下數字組成的新數最小的刪數方案。對於給定的正整...

貪心 刪數問題

題目描述 鍵盤輸入乙個高精度的正整數n 240位 去掉其中任意s個數字後剩下的數字按原左右次序將組成乙個新的正整數。程式設計對給定的n和s,尋找一種方案,使得剩下的數字組成的新數最小。n s 最後剩下的最小數 樣例輸入 178543 4樣例輸出13 這題貪心是要找乙個單調增的數,即保證較小數總在高位...

sdut 刪數問題

problem description 鍵盤輸入乙個高精度的正整數n 100位 去掉其中任意s個數字後剩下的數字按照原來的左右次序組成乙個新的正整數。程式設計對給定的n與s,尋找一種方案,使得剩下的數字組成的新數最小。input 輸入有多組 每組包括原始數n,要去掉的數字數s output 輸出去掉...