內容:
鍵盤輸入乙個高精度的正整數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 輸出去掉...