我試圖解決以下問題:總和等於給定數量
什麼是總結所需要factoriais的最小數量等於一個給定數一個? (1≤一個≤10^5)
實施例:
輸入:10,輸出:3(!!! 10 = 3 + 2 + 2)
輸入:25,輸出:2(!25 = 4 + 1!)
我的代碼:
#include<bits/stdc++.h>
using namespace std;
int a;
int rec(int vet){
int count = 0;
a = a - vet;
if(a >= vet){
count++;
rec(vet);
}
count++;
return count;
}
int main(){
int vet[8] = {1}, count = 0;
cin >> a;
for(int i = 2; i <= 8; i++){
vet[i-1] = vet[i-2]*i;
}
for(int i = 7; i >= 0; i--){
if(a < vet[i]){
continue;
}
count += rec(vet[i]);
}
cout << count << endl;
}
我的邏輯:
1°:一個 max爲等於100000,所以我們必須 最大fatorial比較是8;!
2°:我把等於或最小的factioral設置爲a, 從它減去階乘並計算++;如果在減法之後,我的因子仍然大於 a,我會以遞歸方式執行相同的步驟。
此代碼傳遞給基礎案例,但我得到了錯誤的答案。我無法找到它沒有通過的情況,所以我在這裏。
你能找到我錯在哪裏嗎?或者如果我的解決方案不好,我應該嘗試另一種方法。
感謝您的幫助!
第1步,瞭解如何使用調試器。遍歷每行代碼,檢查變量變化等。發佈你找到的東西。謝謝。 – OldProgrammer
@OldProgrammer問題是他似乎把它提交給一些在線法官,他沒有告訴他這個測試案例失敗了。 –
@OldProgrammer就是這一點。我試着用很多輸入進行調試,然後全部都是正確的。我在這裏是因爲我沒有找到什麼輸入導致麻煩。 – Katreque