題意很簡單,有兩種想法,做題過程中,自己想到了第一種解法,但是沒能用**實現,第二種是看自己的部落格的時候,發現和斯特林數很像。
對於乙個數m,分成n組,首先假定確定第一位,如果是1,則剩餘的n-1位數的和是m-1;第一位是2,剩餘的n-2位數的和是m-2;注意,這裡第一位數不能超過m/n,否則會出現重複,**如下:
#includeusing namespace std;
int getnum(int m,int n,int mi)
int main()
num[i][i]=1;
} int t;
cin>>t;
while (t--)
{ int m,n;
cin>>m>>n;
cout<
總結:解法其實一樣,只是有兩種理解方式,注意方法的積累,和對**的實現能力。
UVA714給出n個數分成m個部分,使和最大的最小
這題,小白書上有講,所以當時也沒多想直接二分,分完之後,發現有問題,他說前面的盡量小,這裡就要貪心,從後面貪心,只要和值不大於二分的值就一直二分,然後發現還是不對,看了別人的,忽略了乙個問題,二分的時候 x的初始值不能是零,因為我寫的判斷二分的函式比較特殊,所以如果判斷的值小於全部的數也能過,所以,...
從n個數中刪除m個數
補題 題目大意是 有個很大的整數n,刪除其中的m位數字,使得剩下的數字按原來的次序組成的數最大。include include include include include include include define ll long long define inf 0x3f3f3f3f usin...
從N個數中等概率列印M個數
題目 給定乙個長度為n且 沒有重複元素 的陣列array和乙個整數m,實現函式等概論隨機列印array中的m個數。要求 1.相同的數不要重複列印 2.時間複雜度為o m 額外空間複雜度為o 1 3.可以改變array陣列 解題思路 解法的關鍵點是利用要求3改變陣列array。列印過程如下 1.在 0...